Add comprehensive development roadmap via GitHub Issues

Created 10 detailed GitHub issues covering:
- Project activation and management UI (#1-2)
- Worker node coordination and visualization (#3-4)
- Automated GitHub repository scanning (#5)
- Intelligent model-to-issue matching (#6)
- Multi-model task execution system (#7)
- N8N workflow integration (#8)
- Hive-Bzzz P2P bridge (#9)
- Peer assistance protocol (#10)

Each issue includes detailed specifications, acceptance criteria,
technical implementation notes, and dependency mapping.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
anthonyrawlins
2025-07-12 19:41:01 +10:00
parent 9a6a06da89
commit e89f2f4b7b
4980 changed files with 1501266 additions and 57 deletions

View File

@@ -0,0 +1,6 @@
import { Renderer, PartialStoryFn } from 'storybook/internal/types';
/** @deprecated Will be removed in Storybook v10 */
declare const withActions: <T extends Renderer>(storyFn: PartialStoryFn<T>) => T['storyResult'];
export { withActions };

View File

@@ -0,0 +1,131 @@
var D = Object.defineProperty;
var r = (e, n) => D(e, "name", { value: n, configurable: !0 });
// src/actions/decorator.ts
import { makeDecorator as P, useEffect as x } from "storybook/preview-api";
// src/actions/constants.ts
var h = "actions", y = "storybook/actions", $ = `${y}/panel`, g = `${y}/action-event`, B = `${y}/action-clear`;
// src/actions/runtime/action.ts
import { ImplicitActionsDuringRendering as R } from "storybook/internal/preview-errors";
import { global as E } from "@storybook/global";
import { addons as S } from "storybook/preview-api";
// src/actions/runtime/configureActions.ts
var a = {
depth: 10,
clearOnStoryChange: !0,
limit: 50
};
// src/actions/runtime/action.ts
var A = /* @__PURE__ */ r((e, n) => {
let t = Object.getPrototypeOf(e);
return !t || n(t) ? t : A(t, n);
}, "findProto"), j = /* @__PURE__ */ r((e) => !!(typeof e == "object" && e && A(e, (n) => /^Synthetic(?:Base)?Event$/.test(n.constructor.name)) &&
typeof e.persist == "function"), "isReactSyntheticEvent"), I = /* @__PURE__ */ r((e) => {
if (j(e)) {
let n = Object.create(
e.constructor.prototype,
Object.getOwnPropertyDescriptors(e)
);
n.persist();
let t = Object.getOwnPropertyDescriptor(n, "view"), o = t?.value;
return typeof o == "object" && o?.constructor.name === "Window" && Object.defineProperty(n, "view", {
...t,
value: Object.create(o.constructor.prototype)
}), n;
}
return e;
}, "serializeArg");
function O(e, n = {}) {
let t = {
...a,
...n
}, o = /* @__PURE__ */ r(function(...i) {
if (n.implicit) {
let d = ("__STORYBOOK_PREVIEW__" in E ? E.__STORYBOOK_PREVIEW__ : void 0)?.storyRenders.find(
(c) => c.phase === "playing" || c.phase === "rendering"
);
if (d) {
let c = !globalThis?.FEATURES?.disallowImplicitActionsInRenderV8, u = new R({
phase: d.phase,
name: e,
deprecated: c
});
if (c)
console.warn(u);
else
throw u;
}
}
let m = S.getChannel(), p = Date.now().toString(36) + Math.random().toString(36).substring(2), l = 5, f = i.map(I), w = i.length > 1 ? f :
f[0], _ = {
id: p,
count: 0,
data: { name: e, args: w },
options: {
...t,
maxDepth: l + (t.depth || 3)
}
};
m.emit(g, _);
}, "actionHandler");
return o.isAction = !0, o.implicit = n.implicit, o;
}
r(O, "action");
// src/actions/runtime/actions.ts
var b = /* @__PURE__ */ r((...e) => {
let n = a, t = e;
t.length === 1 && Array.isArray(t[0]) && ([t] = t), t.length !== 1 && typeof t[t.length - 1] != "string" && (n = {
...a,
...t.pop()
});
let o = t[0];
(t.length !== 1 || typeof o == "string") && (o = {}, t.forEach((i) => {
o[i] = i;
}));
let s = {};
return Object.keys(o).forEach((i) => {
s[i] = O(o[i], n);
}), s;
}, "actions");
// src/actions/decorator.ts
var T = /^(\S+)\s*(.*)$/, k = Element != null && !Element.prototype.matches, F = k ? "msMatchesSelector" : "matches", v = /* @__PURE__ */ r(
(e, n) => {
if (e[F](n))
return !0;
let t = e.parentElement;
return t ? v(t, n) : !1;
}, "hasMatchInAncestry"), M = /* @__PURE__ */ r((e, ...n) => {
let t = e(...n);
return Object.entries(t).map(([o, s]) => {
let [i, m, p] = o.match(T) || [];
return {
eventName: m,
handler: /* @__PURE__ */ r((l) => {
(!p || v(l.target, p)) && s(l);
}, "handler")
};
});
}, "createHandlers"), C = /* @__PURE__ */ r((e, ...n) => {
let t = typeof globalThis.document < "u" && globalThis.document.getElementById("storybook-root");
x(() => {
if (t) {
let o = M(e, ...n);
return o.forEach(({ eventName: s, handler: i }) => t.addEventListener(s, i)), () => o.forEach(({ eventName: s, handler: i }) => t.removeEventListener(
s, i));
}
}, [t, e, n]);
}, "applyEventHandlers"), rt = P({
name: "withActions",
parameterName: h,
skipIfNoParametersOrOptions: !0,
wrapper: /* @__PURE__ */ r((e, n, { parameters: t }) => (t?.handles && C(b, ...t.handles), e(n)), "wrapper")
});
export {
rt as withActions
};

121
frontend/node_modules/storybook/dist/actions/index.cjs generated vendored Normal file
View File

@@ -0,0 +1,121 @@
"use strict";
var a = Object.defineProperty;
var D = Object.getOwnPropertyDescriptor;
var x = Object.getOwnPropertyNames;
var R = Object.prototype.hasOwnProperty;
var i = (t, o) => a(t, "name", { value: o, configurable: !0 });
var j = (t, o) => {
for (var n in o)
a(t, n, { get: o[n], enumerable: !0 });
}, P = (t, o, n, e) => {
if (o && typeof o == "object" || typeof o == "function")
for (let r of x(o))
!R.call(t, r) && r !== n && a(t, r, { get: () => o[r], enumerable: !(e = D(o, r)) || e.enumerable });
return t;
};
var S = (t) => P(a({}, "__esModule", { value: !0 }), t);
// src/actions/index.ts
var $ = {};
j($, {
ADDON_ID: () => l,
CLEAR_ID: () => k,
CYCLIC_KEY: () => C,
EVENT_ID: () => m,
PANEL_ID: () => T,
PARAM_KEY: () => I,
action: () => f,
actions: () => Y,
config: () => s,
configureActions: () => F
});
module.exports = S($);
// src/actions/constants.ts
var I = "actions", l = "storybook/actions", T = `${l}/panel`, m = `${l}/action-event`, k = `${l}/action-clear`, C = "$___storybook.isCyclic";
// src/actions/runtime/action.ts
var A = require("storybook/internal/preview-errors"), y = require("@storybook/global"), O = require("storybook/preview-api");
// src/actions/runtime/configureActions.ts
var s = {
depth: 10,
clearOnStoryChange: !0,
limit: 50
}, F = /* @__PURE__ */ i((t = {}) => {
Object.assign(s, t);
}, "configureActions");
// src/actions/runtime/action.ts
var h = /* @__PURE__ */ i((t, o) => {
let n = Object.getPrototypeOf(t);
return !n || o(n) ? n : h(n, o);
}, "findProto"), V = /* @__PURE__ */ i((t) => !!(typeof t == "object" && t && h(t, (o) => /^Synthetic(?:Base)?Event$/.test(o.constructor.name)) &&
typeof t.persist == "function"), "isReactSyntheticEvent"), W = /* @__PURE__ */ i((t) => {
if (V(t)) {
let o = Object.create(
t.constructor.prototype,
Object.getOwnPropertyDescriptors(t)
);
o.persist();
let n = Object.getOwnPropertyDescriptor(o, "view"), e = n?.value;
return typeof e == "object" && e?.constructor.name === "Window" && Object.defineProperty(o, "view", {
...n,
value: Object.create(e.constructor.prototype)
}), o;
}
return t;
}, "serializeArg");
function f(t, o = {}) {
let n = {
...s,
...o
}, e = /* @__PURE__ */ i(function(...c) {
if (o.implicit) {
let u = ("__STORYBOOK_PREVIEW__" in y.global ? y.global.__STORYBOOK_PREVIEW__ : void 0)?.storyRenders.find(
(p) => p.phase === "playing" || p.phase === "rendering"
);
if (u) {
let p = !globalThis?.FEATURES?.disallowImplicitActionsInRenderV8, g = new A.ImplicitActionsDuringRendering({
phase: u.phase,
name: t,
deprecated: p
});
if (p)
console.warn(g);
else
throw g;
}
}
let E = O.addons.getChannel(), b = Date.now().toString(36) + Math.random().toString(36).substring(2), w = 5, d = c.map(W), _ = c.length >
1 ? d : d[0], v = {
id: b,
count: 0,
data: { name: t, args: _ },
options: {
...n,
maxDepth: w + (n.depth || 3)
}
};
E.emit(m, v);
}, "actionHandler");
return e.isAction = !0, e.implicit = o.implicit, e;
}
i(f, "action");
// src/actions/runtime/actions.ts
var Y = /* @__PURE__ */ i((...t) => {
let o = s, n = t;
n.length === 1 && Array.isArray(n[0]) && ([n] = n), n.length !== 1 && typeof n[n.length - 1] != "string" && (o = {
...s,
...n.pop()
});
let e = n[0];
(n.length !== 1 || typeof e == "string") && (e = {}, n.forEach((c) => {
e[c] = c;
}));
let r = {};
return Object.keys(e).forEach((c) => {
r[c] = f(e[c], o);
}), r;
}, "actions");

102
frontend/node_modules/storybook/dist/actions/index.d.ts generated vendored Normal file
View File

@@ -0,0 +1,102 @@
declare const PARAM_KEY = "actions";
declare const ADDON_ID = "storybook/actions";
declare const PANEL_ID = "storybook/actions/panel";
declare const EVENT_ID = "storybook/actions/action-event";
declare const CLEAR_ID = "storybook/actions/action-clear";
declare const CYCLIC_KEY = "$___storybook.isCyclic";
interface Options$1 {
allowRegExp: boolean;
allowSymbol: boolean;
allowDate: boolean;
allowUndefined: boolean;
allowError: boolean;
maxDepth: number;
space: number | undefined;
}
interface Options {
depth: number;
clearOnStoryChange: boolean;
limit: number;
implicit: boolean;
id: string;
}
type ActionOptions = Partial<Options> & Partial<Options$1>;
interface ActionDisplay {
id: string;
data: {
name: string;
args: any[];
};
count: number;
options: ActionOptions;
}
type HandlerFunction = (...args: any[]) => void;
type ActionsMap<T extends string = string> = Record<T, HandlerFunction>;
interface ActionsFunction {
<T extends string>(handlerMap: Record<T, string>, options?: ActionOptions): ActionsMap<T>;
<T extends string>(...handlers: T[]): ActionsMap<T>;
<T extends string>(handler1: T, options?: ActionOptions): ActionsMap<T>;
<T extends string>(handler1: T, handler2: T, options?: ActionOptions): ActionsMap<T>;
<T extends string>(handler1: T, handler2: T, handler3: T, options?: ActionOptions): ActionsMap<T>;
<T extends string>(handler1: T, handler2: T, handler3: T, handler4: T, options?: ActionOptions): ActionsMap<T>;
<T extends string>(handler1: T, handler2: T, handler3: T, handler4: T, handler5: T, options?: ActionOptions): ActionsMap<T>;
<T extends string>(handler1: T, handler2: T, handler3: T, handler4: T, handler5: T, handler6: T, options?: ActionOptions): ActionsMap<T>;
<T extends string>(handler1: T, handler2: T, handler3: T, handler4: T, handler5: T, handler6: T, handler7: T, options?: ActionOptions): ActionsMap<T>;
<T extends string>(handler1: T, handler2: T, handler3: T, handler4: T, handler5: T, handler6: T, handler7: T, handler8: T, options?: ActionOptions): ActionsMap<T>;
<T extends string>(handler1: T, handler2: T, handler3: T, handler4: T, handler5: T, handler6: T, handler7: T, handler8: T, handler9: T, options?: ActionOptions): ActionsMap<T>;
<T extends string>(handler1: T, handler2: T, handler3: T, handler4: T, handler5: T, handler6: T, handler7: T, handler8: T, handler9: T, handler10: T, options?: ActionOptions): ActionsMap<T>;
}
type DecoratorFunction = (args: any[]) => any[];
declare function action(name: string, options?: ActionOptions): HandlerFunction;
declare const actions: ActionsFunction;
declare const config: ActionOptions;
declare const configureActions: (options?: ActionOptions) => void;
interface ActionsParameters {
/**
* Actions configuration
*
* @see https://storybook.js.org/docs/essentials/actions#parameters
*/
actions: {
/**
* Create actions for each arg that matches the regex. (**NOT recommended, see below**)
*
* This is quite useful when your component has dozens (or hundreds) of methods and you do not
* want to manually apply the fn utility for each of those methods. However, this is not the
* recommended way of writing actions. That's because automatically inferred args are not
* available as spies in your play function. If you use argTypesRegex and your stories have play
* functions, you will need to also define args with the fn utility to test them in your play
* function.
*
* @example `argTypesRegex: '^on.*'`
*/
argTypesRegex?: string;
/** Remove the addon panel and disable the addon's behavior */
disable?: boolean;
/**
* Binds a standard HTML event handler to the outermost HTML element rendered by your component
* and triggers an action when the event is called for a given selector. The format is
* `<eventname> <selector>`. The selector is optional; it defaults to all elements.
*
* **To enable this feature, you must use the `withActions` decorator.**
*
* @example `handles: ['mouseover', 'click .btn']`
*
* @see https://storybook.js.org/docs/essentials/actions#action-event-handlers
*/
handles?: string[];
};
}
export { ADDON_ID, type ActionDisplay, type ActionOptions, type ActionsFunction, type ActionsMap, type ActionsParameters, CLEAR_ID, CYCLIC_KEY, type DecoratorFunction, EVENT_ID, type HandlerFunction, PANEL_ID, PARAM_KEY, action, actions, config, configureActions };

105
frontend/node_modules/storybook/dist/actions/index.js generated vendored Normal file
View File

@@ -0,0 +1,105 @@
var w = Object.defineProperty;
var i = (o, n) => w(o, "name", { value: n, configurable: !0 });
// src/actions/constants.ts
var P = "actions", a = "storybook/actions", S = `${a}/panel`, f = `${a}/action-event`, I = `${a}/action-clear`, T = "$___storybook.isCyclic";
// src/actions/runtime/action.ts
import { ImplicitActionsDuringRendering as _ } from "storybook/internal/preview-errors";
import { global as d } from "@storybook/global";
import { addons as v } from "storybook/preview-api";
// src/actions/runtime/configureActions.ts
var c = {
depth: 10,
clearOnStoryChange: !0,
limit: 50
}, C = /* @__PURE__ */ i((o = {}) => {
Object.assign(c, o);
}, "configureActions");
// src/actions/runtime/action.ts
var u = /* @__PURE__ */ i((o, n) => {
let t = Object.getPrototypeOf(o);
return !t || n(t) ? t : u(t, n);
}, "findProto"), D = /* @__PURE__ */ i((o) => !!(typeof o == "object" && o && u(o, (n) => /^Synthetic(?:Base)?Event$/.test(n.constructor.name)) &&
typeof o.persist == "function"), "isReactSyntheticEvent"), x = /* @__PURE__ */ i((o) => {
if (D(o)) {
let n = Object.create(
o.constructor.prototype,
Object.getOwnPropertyDescriptors(o)
);
n.persist();
let t = Object.getOwnPropertyDescriptor(n, "view"), e = t?.value;
return typeof e == "object" && e?.constructor.name === "Window" && Object.defineProperty(n, "view", {
...t,
value: Object.create(e.constructor.prototype)
}), n;
}
return o;
}, "serializeArg");
function g(o, n = {}) {
let t = {
...c,
...n
}, e = /* @__PURE__ */ i(function(...r) {
if (n.implicit) {
let m = ("__STORYBOOK_PREVIEW__" in d ? d.__STORYBOOK_PREVIEW__ : void 0)?.storyRenders.find(
(s) => s.phase === "playing" || s.phase === "rendering"
);
if (m) {
let s = !globalThis?.FEATURES?.disallowImplicitActionsInRenderV8, y = new _({
phase: m.phase,
name: o,
deprecated: s
});
if (s)
console.warn(y);
else
throw y;
}
}
let A = v.getChannel(), O = Date.now().toString(36) + Math.random().toString(36).substring(2), h = 5, l = r.map(x), E = r.length > 1 ? l :
l[0], b = {
id: O,
count: 0,
data: { name: o, args: E },
options: {
...t,
maxDepth: h + (t.depth || 3)
}
};
A.emit(f, b);
}, "actionHandler");
return e.isAction = !0, e.implicit = n.implicit, e;
}
i(g, "action");
// src/actions/runtime/actions.ts
var L = /* @__PURE__ */ i((...o) => {
let n = c, t = o;
t.length === 1 && Array.isArray(t[0]) && ([t] = t), t.length !== 1 && typeof t[t.length - 1] != "string" && (n = {
...c,
...t.pop()
});
let e = t[0];
(t.length !== 1 || typeof e == "string") && (e = {}, t.forEach((r) => {
e[r] = r;
}));
let p = {};
return Object.keys(e).forEach((r) => {
p[r] = g(e[r], n);
}), p;
}, "actions");
export {
a as ADDON_ID,
I as CLEAR_ID,
T as CYCLIC_KEY,
f as EVENT_ID,
S as PANEL_ID,
P as PARAM_KEY,
g as action,
L as actions,
c as config,
C as configureActions
};