@vpxa/kb 0.1.24 → 0.1.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/package.json +9 -2
- package/packages/analyzers/dist/symbol-analyzer.js +5 -5
- package/packages/cli/dist/commands/init/adapters.js +1 -1
- package/packages/cli/dist/commands/init/constants.d.ts +4 -1
- package/packages/cli/dist/commands/init/constants.js +1 -1
- package/packages/cli/dist/commands/init/frontmatter.d.ts +54 -0
- package/packages/cli/dist/commands/init/frontmatter.js +2 -0
- package/packages/cli/dist/commands/init/index.js +4 -4
- package/packages/cli/dist/commands/init/manifest.d.ts +71 -0
- package/packages/cli/dist/commands/init/manifest.js +1 -0
- package/packages/cli/dist/commands/init/scaffold.d.ts +28 -5
- package/packages/cli/dist/commands/init/scaffold.js +1 -1
- package/packages/cli/dist/commands/init/templates.js +38 -9
- package/packages/cli/dist/commands/init/user.d.ts +3 -3
- package/packages/cli/dist/commands/init/user.js +4 -4
- package/packages/cli/dist/commands/system.js +2 -2
- package/packages/cli/dist/kb-init.js +1 -1
- package/packages/core/dist/errors.d.ts +2 -2
- package/packages/core/dist/errors.js +1 -1
- package/packages/core/dist/logger.d.ts +2 -1
- package/packages/core/dist/logger.js +1 -1
- package/packages/core/dist/types.d.ts +6 -0
- package/packages/dashboard/dist/assets/index-9ysCkze9.js +21 -0
- package/packages/dashboard/dist/assets/index-9ysCkze9.js.map +1 -0
- package/packages/dashboard/dist/assets/index-CHpVij2M.css +1 -0
- package/packages/dashboard/dist/index.html +18 -0
- package/packages/elicitation/dist/__tests__/build.test.d.ts +1 -0
- package/packages/elicitation/dist/__tests__/build.test.js +35 -0
- package/packages/elicitation/dist/__tests__/fields.test.d.ts +1 -0
- package/packages/elicitation/dist/__tests__/fields.test.js +81 -0
- package/packages/elicitation/dist/__tests__/normalize.test.d.ts +1 -0
- package/packages/elicitation/dist/__tests__/normalize.test.js +60 -0
- package/packages/elicitation/dist/build.d.ts +13 -0
- package/packages/elicitation/dist/build.js +23 -0
- package/packages/elicitation/dist/fields.d.ts +41 -0
- package/packages/elicitation/dist/fields.js +62 -0
- package/packages/elicitation/dist/index.d.ts +10 -0
- package/packages/elicitation/dist/index.js +12 -0
- package/packages/elicitation/dist/normalize.d.ts +15 -0
- package/packages/elicitation/dist/normalize.js +31 -0
- package/packages/elicitation/dist/types.d.ts +85 -0
- package/packages/elicitation/dist/types.js +8 -0
- package/packages/kb-client/dist/direct-client.d.ts +37 -0
- package/packages/kb-client/dist/direct-client.js +1 -0
- package/packages/kb-client/dist/index.d.ts +5 -0
- package/packages/kb-client/dist/index.js +1 -0
- package/packages/kb-client/dist/mcp-client.d.ts +19 -0
- package/packages/kb-client/dist/mcp-client.js +4 -0
- package/packages/kb-client/dist/parsers.d.ts +35 -0
- package/packages/kb-client/dist/parsers.js +2 -0
- package/packages/kb-client/dist/types.d.ts +62 -0
- package/packages/kb-client/dist/types.js +1 -0
- package/packages/present/dist/index.html +384 -0
- package/packages/server/dist/completions.d.ts +14 -0
- package/packages/server/dist/completions.js +1 -0
- package/packages/server/dist/dashboard-static.d.ts +27 -0
- package/packages/server/dist/dashboard-static.js +1 -0
- package/packages/server/dist/elicitor.d.ts +18 -0
- package/packages/server/dist/elicitor.js +1 -0
- package/packages/server/dist/index.js +1 -1
- package/packages/server/dist/mcp-logging.js +1 -1
- package/packages/server/dist/output-schemas.d.ts +118 -1
- package/packages/server/dist/output-schemas.js +1 -1
- package/packages/server/dist/prompts.d.ts +9 -2
- package/packages/server/dist/prompts.js +13 -7
- package/packages/server/dist/resources/curated-resources.js +1 -1
- package/packages/server/dist/resources/resource-notifier.d.ts +45 -0
- package/packages/server/dist/resources/resource-notifier.js +1 -0
- package/packages/server/dist/sampling.d.ts +41 -0
- package/packages/server/dist/sampling.js +2 -0
- package/packages/server/dist/server.d.ts +5 -2
- package/packages/server/dist/server.js +2 -2
- package/packages/server/dist/task-manager.d.ts +40 -0
- package/packages/server/dist/task-manager.js +1 -0
- package/packages/server/dist/tool-metadata.js +1 -1
- package/packages/server/dist/tool-prefix.d.ts +12 -0
- package/packages/server/dist/tool-prefix.js +1 -0
- package/packages/server/dist/tools/analyze.tools.js +4 -4
- package/packages/server/dist/tools/audit.tool.js +1 -1
- package/packages/server/dist/tools/brainstorm.tool.d.ts +7 -0
- package/packages/server/dist/tools/brainstorm.tool.js +9 -0
- package/packages/server/dist/tools/context.tools.js +9 -9
- package/packages/server/dist/tools/execution.tools.d.ts +2 -1
- package/packages/server/dist/tools/execution.tools.js +4 -4
- package/packages/server/dist/tools/forge.tools.js +10 -10
- package/packages/server/dist/tools/forget.tool.d.ts +2 -1
- package/packages/server/dist/tools/forget.tool.js +1 -1
- package/packages/server/dist/tools/graph.tool.js +2 -2
- package/packages/server/dist/tools/manipulation.tools.js +4 -4
- package/packages/server/dist/tools/onboard.tool.js +2 -2
- package/packages/server/dist/tools/present-blocks.d.ts +46 -0
- package/packages/server/dist/tools/present-blocks.js +27 -0
- package/packages/server/dist/tools/present-charts.d.ts +31 -0
- package/packages/server/dist/tools/present-charts.js +34 -0
- package/packages/server/dist/tools/present-theme.d.ts +14 -0
- package/packages/server/dist/tools/present-theme.js +395 -0
- package/packages/server/dist/tools/present-utils.d.ts +11 -0
- package/packages/server/dist/tools/present-utils.js +1 -0
- package/packages/server/dist/tools/present.tool.d.ts +7 -0
- package/packages/server/dist/tools/present.tool.js +113 -0
- package/packages/server/dist/tools/produce.tool.js +2 -2
- package/packages/server/dist/tools/reindex.tool.d.ts +2 -1
- package/packages/server/dist/tools/reindex.tool.js +2 -2
- package/packages/server/dist/tools/remember.tool.d.ts +2 -1
- package/packages/server/dist/tools/remember.tool.js +2 -2
- package/packages/server/dist/tools/replay.tool.js +1 -1
- package/packages/server/dist/tools/search.tool.d.ts +2 -1
- package/packages/server/dist/tools/search.tool.js +5 -4
- package/packages/server/dist/tools/status.tool.js +2 -2
- package/packages/server/dist/tools/update.tool.d.ts +2 -1
- package/packages/server/dist/tools/update.tool.js +1 -1
- package/packages/server/dist/tools/utility.tools.js +1 -1
- package/packages/tools/dist/batch.js +1 -1
- package/packages/tools/dist/checkpoint.js +1 -1
- package/packages/tools/dist/config-extractor.d.ts +9 -0
- package/packages/tools/dist/config-extractor.js +7 -0
- package/packages/tools/dist/dead-symbols.js +2 -2
- package/packages/tools/dist/diagram-builder.d.ts +9 -0
- package/packages/tools/dist/diagram-builder.js +9 -0
- package/packages/tools/dist/evidence-map.d.ts +12 -1
- package/packages/tools/dist/evidence-map.js +2 -2
- package/packages/tools/dist/find-examples.js +2 -2
- package/packages/tools/dist/forge-classify.d.ts +4 -0
- package/packages/tools/dist/forge-classify.js +1 -1
- package/packages/tools/dist/git-context.d.ts +1 -0
- package/packages/tools/dist/git-context.js +3 -3
- package/packages/tools/dist/index.d.ts +3 -2
- package/packages/tools/dist/index.js +1 -1
- package/packages/tools/dist/onboard-utils.d.ts +12 -0
- package/packages/tools/dist/onboard-utils.js +1 -0
- package/packages/tools/dist/onboard.js +2 -21
- package/packages/tools/dist/regex-utils.d.ts +8 -0
- package/packages/tools/dist/regex-utils.js +1 -0
- package/packages/tools/dist/rename.js +2 -2
- package/packages/tools/dist/replay.d.ts +2 -1
- package/packages/tools/dist/replay.js +4 -4
- package/packages/tools/dist/symbol.js +3 -3
- package/packages/tools/dist/synthesis-engine.d.ts +13 -0
- package/packages/tools/dist/synthesis-engine.js +6 -0
- package/packages/tools/dist/trace.js +2 -2
- package/packages/tui/dist/App-DXY0-tlW.js +2 -0
- package/packages/tui/dist/App.d.ts +3 -3
- package/packages/tui/dist/App.js +1 -1
- package/packages/tui/dist/CuratedPanel-BIamXLNy.js +2 -0
- package/packages/tui/dist/LogPanel-D6u6o84n.js +3 -0
- package/packages/tui/dist/SearchPanel-CpJGczAc.js +2 -0
- package/packages/tui/dist/StatusPanel-BAbUxyqQ.js +2 -0
- package/packages/tui/dist/hooks/useKBClient.d.ts +9 -0
- package/packages/tui/dist/hooks/useKBClient.js +2 -0
- package/packages/tui/dist/hooks/usePolling.d.ts +8 -0
- package/packages/tui/dist/hooks/usePolling.js +2 -0
- package/packages/tui/dist/index.d.ts +6 -2
- package/packages/tui/dist/index.js +1 -1
- package/packages/tui/dist/jsx-runtime-y6Gdq5PZ.js +294 -0
- package/packages/tui/dist/panels/CuratedPanel.d.ts +1 -7
- package/packages/tui/dist/panels/CuratedPanel.js +1 -1
- package/packages/tui/dist/panels/LogPanel.js +1 -1
- package/packages/tui/dist/panels/SearchPanel.d.ts +1 -10
- package/packages/tui/dist/panels/SearchPanel.js +1 -1
- package/packages/tui/dist/panels/StatusPanel.d.ts +1 -7
- package/packages/tui/dist/panels/StatusPanel.js +1 -1
- package/packages/tui/dist/react-D__J1GQe.js +24 -0
- package/packages/tui/dist/types-VcTHNV6s.d.ts +64 -0
- package/packages/tui/dist/useKBClient-C35iA4uG.js +2 -0
- package/packages/tui/dist/usePolling-BbjnRWgx.js +2 -0
- package/scaffold/adapters/copilot.mjs +9 -81
- package/scaffold/definitions/agents.mjs +12 -0
- package/scaffold/definitions/bodies.mjs +39 -14
- package/scaffold/definitions/protocols.mjs +149 -0
- package/scaffold/definitions/tools.mjs +40 -5
- package/scaffold/general/agents/Architect-Reviewer-Alpha.agent.md +1 -1
- package/scaffold/general/agents/Architect-Reviewer-Beta.agent.md +1 -1
- package/scaffold/general/agents/Code-Reviewer-Alpha.agent.md +1 -1
- package/scaffold/general/agents/Code-Reviewer-Beta.agent.md +1 -1
- package/scaffold/general/agents/Debugger.agent.md +2 -2
- package/scaffold/general/agents/Documenter.agent.md +2 -2
- package/scaffold/general/agents/Explorer.agent.md +4 -3
- package/scaffold/general/agents/Frontend.agent.md +1 -1
- package/scaffold/general/agents/Implementer.agent.md +1 -1
- package/scaffold/general/agents/Orchestrator.agent.md +16 -1
- package/scaffold/general/agents/Planner.agent.md +11 -4
- package/scaffold/general/agents/Refactor.agent.md +1 -1
- package/scaffold/general/agents/Researcher-Alpha.agent.md +1 -1
- package/scaffold/general/agents/Researcher-Beta.agent.md +1 -1
- package/scaffold/general/agents/Researcher-Delta.agent.md +1 -1
- package/scaffold/general/agents/Researcher-Gamma.agent.md +1 -1
- package/scaffold/general/agents/Security.agent.md +10 -8
- package/scaffold/general/agents/_shared/architect-reviewer-base.md +1 -0
- package/scaffold/general/agents/_shared/code-agent-base.md +28 -0
- package/scaffold/general/agents/_shared/code-reviewer-base.md +1 -0
- package/scaffold/general/agents/_shared/forge-protocol.md +44 -0
- package/scaffold/general/agents/_shared/researcher-base.md +14 -0
- package/scaffold/general/agents/templates/adr-template.md +1 -0
- package/scaffold/general/agents/templates/execution-state.md +1 -0
- package/skills/knowledge-base/SKILL.md +19 -6
- package/skills/present/SKILL.md +153 -0
- package/packages/server/dist/tools/toolkit.tools.d.ts +0 -36
- package/packages/server/dist/tools/toolkit.tools.js +0 -20
- package/packages/tui/dist/App-DE_tdOhs.js +0 -2
- package/packages/tui/dist/CuratedPanel-sYdZAICX.js +0 -2
- package/packages/tui/dist/LogPanel-Ce3jMQbH.js +0 -3
- package/packages/tui/dist/SearchPanel-DREo6zgt.js +0 -2
- package/packages/tui/dist/StatusPanel-2ex8fLOO.js +0 -2
- package/packages/tui/dist/embedder.interface-IFCBpOlX.d.ts +0 -28
- package/packages/tui/dist/index-C8NmOF18.d.ts +0 -13
- package/packages/tui/dist/jsx-runtime-Cof-kwFn.js +0 -316
- package/packages/tui/dist/store.interface-CnY6SPOH.d.ts +0 -150
- /package/packages/tui/dist/{devtools-DUyj952l.js → devtools-DMOZMn70.js} +0 -0
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
2
|
-
import { t as IKnowledgeStore } from "../store.interface-CnY6SPOH.js";
|
|
3
2
|
import React from "react";
|
|
4
3
|
|
|
5
4
|
//#region packages/tui/src/panels/CuratedPanel.d.ts
|
|
6
|
-
|
|
7
|
-
store: IKnowledgeStore;
|
|
8
|
-
}
|
|
9
|
-
declare function CuratedPanel({
|
|
10
|
-
store
|
|
11
|
-
}: CuratedPanelProps): React.ReactElement;
|
|
5
|
+
declare function CuratedPanel(): React.ReactElement;
|
|
12
6
|
//#endregion
|
|
13
7
|
export { CuratedPanel };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
2
|
-
import{t as e}from"../CuratedPanel-
|
|
2
|
+
import{t as e}from"../CuratedPanel-BIamXLNy.js";export{e as CuratedPanel};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
2
|
-
import{t as e}from"../LogPanel-
|
|
2
|
+
import{t as e}from"../LogPanel-D6u6o84n.js";export{e as LogPanel};
|
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
2
|
-
import { t as IKnowledgeStore } from "../store.interface-CnY6SPOH.js";
|
|
3
|
-
import { t as IEmbedder } from "../embedder.interface-IFCBpOlX.js";
|
|
4
2
|
import React from "react";
|
|
5
3
|
|
|
6
4
|
//#region packages/tui/src/panels/SearchPanel.d.ts
|
|
7
|
-
|
|
8
|
-
store: IKnowledgeStore;
|
|
9
|
-
embedder: IEmbedder;
|
|
10
|
-
}
|
|
11
|
-
declare function SearchPanel({
|
|
12
|
-
store,
|
|
13
|
-
embedder
|
|
14
|
-
}: SearchPanelProps): React.ReactElement;
|
|
5
|
+
declare function SearchPanel(): React.ReactElement;
|
|
15
6
|
//#endregion
|
|
16
7
|
export { SearchPanel };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
2
|
-
import{t as e}from"../SearchPanel-
|
|
2
|
+
import{t as e}from"../SearchPanel-CpJGczAc.js";export{e as SearchPanel};
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
2
|
-
import { t as IKnowledgeStore } from "../store.interface-CnY6SPOH.js";
|
|
3
2
|
import React from "react";
|
|
4
3
|
|
|
5
4
|
//#region packages/tui/src/panels/StatusPanel.d.ts
|
|
6
|
-
|
|
7
|
-
store: IKnowledgeStore;
|
|
8
|
-
}
|
|
9
|
-
declare function StatusPanel({
|
|
10
|
-
store
|
|
11
|
-
}: StatusPanelProps): React.ReactElement;
|
|
5
|
+
declare function StatusPanel(): React.ReactElement;
|
|
12
6
|
//#endregion
|
|
13
7
|
export { StatusPanel };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
2
|
-
import{t as e}from"../StatusPanel-
|
|
2
|
+
import{t as e}from"../StatusPanel-BAbUxyqQ.js";export{e as StatusPanel};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
2
|
+
import{t as e}from"./chunk-D6axbAb-.js";
|
|
3
|
+
/**
|
|
4
|
+
* @license React
|
|
5
|
+
* react.production.js
|
|
6
|
+
*
|
|
7
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the MIT license found in the
|
|
10
|
+
* LICENSE file in the root directory of this source tree.
|
|
11
|
+
*/
|
|
12
|
+
var t=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function ee(e,t){return E(e.type,t,e.props)}function D(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function O(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var k=/\/+/g;function A(e,t){return typeof e==`object`&&e&&e.key!=null?O(``+e.key):t.toString(36)}function j(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function M(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,M(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+A(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(k,`$&/`)+`/`),M(o,r,i,``,function(e){return e})):o!=null&&(D(o)&&(o=ee(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(k,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u<e.length;u++)a=e[u],s=l+A(a,u),c+=M(a,r,i,s,o);else if(u=m(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+A(a,u++),c+=M(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return M(j(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function N(e,t,n){if(e==null)return e;var r=[],i=0;return M(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function P(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t)},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var F=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},I={map:N,forEach:function(e,t,n){N(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return N(e,function(){t++}),t},toArray:function(e){return N(e,function(e){return e})||[]},only:function(e){if(!D(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=f,e.Children=I,e.Component=v,e.Fragment=r,e.Profiler=a,e.PureComponent=b,e.StrictMode=i,e.Suspense=l,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=w,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return w.H.useMemoCache(e)}},e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=g({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!T.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return E(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)T.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return E(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=D,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:P}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=function(e){var t=w.T,n={};w.T=n;try{var r=e(),i=w.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(C,F)}catch(e){F(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),w.T=t}},e.unstable_useCacheRefresh=function(){return w.H.useCacheRefresh()},e.use=function(e){return w.H.use(e)},e.useActionState=function(e,t,n){return w.H.useActionState(e,t,n)},e.useCallback=function(e,t){return w.H.useCallback(e,t)},e.useContext=function(e){return w.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return w.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return w.H.useEffect(e,t)},e.useEffectEvent=function(e){return w.H.useEffectEvent(e)},e.useId=function(){return w.H.useId()},e.useImperativeHandle=function(e,t,n){return w.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return w.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return w.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return w.H.useMemo(e,t)},e.useOptimistic=function(e,t){return w.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return w.H.useReducer(e,t,n)},e.useRef=function(e){return w.H.useRef(e)},e.useState=function(e){return w.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return w.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return w.H.useTransition()},e.version=`19.2.4`})),n=e(((e,t)=>{process.env.NODE_ENV!==`production`&&(function(){function n(e,t){Object.defineProperty(a.prototype,e,{get:function(){console.warn(`%s(...) is deprecated in plain JavaScript React classes. %s`,t[0],t[1])}})}function r(e){return typeof e!=`object`||!e?null:(e=oe&&e[oe]||e[`@@iterator`],typeof e==`function`?e:null)}function i(e,t){e=(e=e.constructor)&&(e.displayName||e.name)||`ReactClass`;var n=e+`.`+t;se[n]||(console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",t,e),se[n]=!0)}function a(e,t,n){this.props=e,this.context=t,this.refs=W,this.updater=n||H}function o(){}function s(e,t,n){this.props=e,this.context=t,this.refs=W,this.updater=n||H}function c(){}function l(e){return``+e}function u(e){try{l(e);var t=!1}catch{t=!0}if(t){t=console;var n=t.error,r=typeof Symbol==`function`&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||`Object`;return n.call(t,`The provided key is an unsupported type %s. This value must be coerced to a string before using it here.`,r),l(e)}}function d(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===ce?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case I:return`Fragment`;case L:return`Profiler`;case te:return`StrictMode`;case z:return`Suspense`;case ie:return`SuspenseList`;case ae:return`Activity`}if(typeof e==`object`)switch(typeof e.tag==`number`&&console.error(`Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.`),e.$$typeof){case F:return`Portal`;case ne:return e.displayName||`Context`;case R:return(e._context.displayName||`Context`)+`.Consumer`;case re:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case B:return t=e.displayName||null,t===null?d(e.type)||`Memo`:t;case V:t=e._payload,e=e._init;try{return d(e(t))}catch{}}return null}function f(e){if(e===I)return`<>`;if(typeof e==`object`&&e&&e.$$typeof===V)return`<...>`;try{var t=d(e);return t?`<`+t+`>`:`<...>`}catch{return`<...>`}}function p(){var e=q.A;return e===null?null:e.getOwner()}function m(){return Error(`react-stack-top-frame`)}function h(e){if(J.call(e,`key`)){var t=Object.getOwnPropertyDescriptor(e,`key`).get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function g(e,t){function n(){ue||(ue=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",t))}n.isReactWarning=!0,Object.defineProperty(e,`key`,{get:n,configurable:!0})}function _(){var e=d(this.type);return fe[e]||(fe[e]=!0,console.error(`Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.`)),e=this.props.ref,e===void 0?null:e}function v(e,t,n,r,i,a){var o=n.ref;return e={$$typeof:P,type:e,key:t,props:n,_owner:r},(o===void 0?null:o)===null?Object.defineProperty(e,`ref`,{enumerable:!1,value:null}):Object.defineProperty(e,`ref`,{enumerable:!1,get:_}),e._store={},Object.defineProperty(e._store,`validated`,{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,`_debugInfo`,{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,`_debugStack`,{configurable:!1,enumerable:!1,writable:!0,value:i}),Object.defineProperty(e,`_debugTask`,{configurable:!1,enumerable:!1,writable:!0,value:a}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function y(e,t){return t=v(e.type,t,e.props,e._owner,e._debugStack,e._debugTask),e._store&&(t._store.validated=e._store.validated),t}function b(e){x(e)?e._store&&(e._store.validated=1):typeof e==`object`&&e&&e.$$typeof===V&&(e._payload.status===`fulfilled`?x(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function x(e){return typeof e==`object`&&!!e&&e.$$typeof===P}function S(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}function C(e,t){return typeof e==`object`&&e&&e.key!=null?(u(e.key),S(``+e.key)):t.toString(36)}function w(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(c,c):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function T(e,t,n,i,a){var o=typeof e;(o===`undefined`||o===`boolean`)&&(e=null);var s=!1;if(e===null)s=!0;else switch(o){case`bigint`:case`string`:case`number`:s=!0;break;case`object`:switch(e.$$typeof){case P:case F:s=!0;break;case V:return s=e._init,T(s(e._payload),t,n,i,a)}}if(s){s=e,a=a(s);var c=i===``?`.`+C(s,0):i;return K(a)?(n=``,c!=null&&(n=c.replace(ge,`$&/`)+`/`),T(a,t,n,``,function(e){return e})):a!=null&&(x(a)&&(a.key!=null&&(s&&s.key===a.key||u(a.key)),n=y(a,n+(a.key==null||s&&s.key===a.key?``:(``+a.key).replace(ge,`$&/`)+`/`)+c),i!==``&&s!=null&&x(s)&&s.key==null&&s._store&&!s._store.validated&&(n._store.validated=2),a=n),t.push(a)),1}if(s=0,c=i===``?`.`:i+`:`,K(e))for(var l=0;l<e.length;l++)i=e[l],o=c+C(i,l),s+=T(i,t,n,o,a);else if(l=r(e),typeof l==`function`)for(l===e.entries&&(he||console.warn(`Using Maps as children is not supported. Use an array of keyed ReactElements instead.`),he=!0),e=l.call(e),l=0;!(i=e.next()).done;)i=i.value,o=c+C(i,l++),s+=T(i,t,n,o,a);else if(o===`object`){if(typeof e.then==`function`)return T(w(e),t,n,i,a);throw t=String(e),Error(`Objects are not valid as a React child (found: `+(t===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:t)+`). If you meant to render a collection of children, use an array instead.`)}return s}function E(e,t,n){if(e==null)return e;var r=[],i=0;return T(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function ee(e){if(e._status===-1){var t=e._ioInfo;t!=null&&(t.start=t.end=performance.now()),t=e._result;var n=t();if(n.then(function(t){if(e._status===0||e._status===-1){e._status=1,e._result=t;var r=e._ioInfo;r!=null&&(r.end=performance.now()),n.status===void 0&&(n.status=`fulfilled`,n.value=t)}},function(t){if(e._status===0||e._status===-1){e._status=2,e._result=t;var r=e._ioInfo;r!=null&&(r.end=performance.now()),n.status===void 0&&(n.status=`rejected`,n.reason=t)}}),t=e._ioInfo,t!=null){t.value=n;var r=n.displayName;typeof r==`string`&&(t.name=r)}e._status===-1&&(e._status=0,e._result=n)}if(e._status===1)return t=e._result,t===void 0&&console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
|
|
13
|
+
|
|
14
|
+
Your code should look like:
|
|
15
|
+
const MyComponent = lazy(() => import('./MyComponent'))
|
|
16
|
+
|
|
17
|
+
Did you accidentally put curly braces around the import?`,t),`default`in t||console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
|
|
18
|
+
|
|
19
|
+
Your code should look like:
|
|
20
|
+
const MyComponent = lazy(() => import('./MyComponent'))`,t),t.default;throw e._result}function D(){var e=q.H;return e===null&&console.error(`Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
|
|
21
|
+
1. You might have mismatching versions of React and the renderer (such as React DOM)
|
|
22
|
+
2. You might be breaking the Rules of Hooks
|
|
23
|
+
3. You might have more than one copy of React in the same app
|
|
24
|
+
See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),e}function O(){q.asyncTransitions--}function k(e){if(Y===null)try{var n=(`require`+Math.random()).slice(0,7);Y=(t&&t[n]).call(t,`timers`).setImmediate}catch{Y=function(e){!1===ve&&(ve=!0,typeof MessageChannel>`u`&&console.error(`This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning.`));var t=new MessageChannel;t.port1.onmessage=e,t.port2.postMessage(void 0)}}return Y(e)}function A(e){return 1<e.length&&typeof AggregateError==`function`?AggregateError(e):e[0]}function j(e,t){t!==X-1&&console.error(`You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. `),X=t}function M(e,t,n){var r=q.actQueue;if(r!==null)if(r.length!==0)try{N(r),k(function(){return M(e,t,n)});return}catch(e){q.thrownErrors.push(e)}else q.actQueue=null;0<q.thrownErrors.length?(r=A(q.thrownErrors),q.thrownErrors.length=0,n(r)):t(e)}function N(e){if(!Q){Q=!0;var t=0;try{for(;t<e.length;t++){var n=e[t];do{q.didUsePromise=!1;var r=n(!1);if(r!==null){if(q.didUsePromise){e[t]=n,e.splice(0,t);return}n=r}else break}while(1)}e.length=0}catch(n){e.splice(0,t+1),q.thrownErrors.push(n)}finally{Q=!1}}}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart==`function`&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var P=Symbol.for(`react.transitional.element`),F=Symbol.for(`react.portal`),I=Symbol.for(`react.fragment`),te=Symbol.for(`react.strict_mode`),L=Symbol.for(`react.profiler`),R=Symbol.for(`react.consumer`),ne=Symbol.for(`react.context`),re=Symbol.for(`react.forward_ref`),z=Symbol.for(`react.suspense`),ie=Symbol.for(`react.suspense_list`),B=Symbol.for(`react.memo`),V=Symbol.for(`react.lazy`),ae=Symbol.for(`react.activity`),oe=Symbol.iterator,se={},H={isMounted:function(){return!1},enqueueForceUpdate:function(e){i(e,`forceUpdate`)},enqueueReplaceState:function(e){i(e,`replaceState`)},enqueueSetState:function(e){i(e,`setState`)}},U=Object.assign,W={};Object.freeze(W),a.prototype.isReactComponent={},a.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},a.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};var G={isMounted:[`isMounted`,`Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks.`],replaceState:[`replaceState`,`Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236).`]};for($ in G)G.hasOwnProperty($)&&n($,G[$]);o.prototype=a.prototype,G=s.prototype=new o,G.constructor=s,U(G,a.prototype),G.isPureReactComponent=!0;var K=Array.isArray,ce=Symbol.for(`react.client.reference`),q={H:null,A:null,T:null,S:null,actQueue:null,asyncTransitions:0,isBatchingLegacy:!1,didScheduleLegacyUpdate:!1,didUsePromise:!1,thrownErrors:[],getCurrentStack:null,recentlyCreatedOwnerStacks:0},J=Object.prototype.hasOwnProperty,le=console.createTask?console.createTask:function(){return null};G={react_stack_bottom_frame:function(e){return e()}};var ue,de,fe={},pe=G.react_stack_bottom_frame.bind(G,m)(),me=le(f(m)),he=!1,ge=/\/+/g,_e=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},ve=!1,Y=null,X=0,Z=!1,Q=!1,ye=typeof queueMicrotask==`function`?function(e){queueMicrotask(function(){return queueMicrotask(e)})}:k;G=Object.freeze({__proto__:null,c:function(e){return D().useMemoCache(e)}});var $={map:E,forEach:function(e,t,n){E(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return E(e,function(){t++}),t},toArray:function(e){return E(e,function(e){return e})||[]},only:function(e){if(!x(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=ae,e.Children=$,e.Component=a,e.Fragment=I,e.Profiler=L,e.PureComponent=s,e.StrictMode=te,e.Suspense=z,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=q,e.__COMPILER_RUNTIME=G,e.act=function(e){var t=q.actQueue,n=X;X++;var r=q.actQueue=t===null?[]:t,i=!1;try{var a=e()}catch(e){q.thrownErrors.push(e)}if(0<q.thrownErrors.length)throw j(t,n),e=A(q.thrownErrors),q.thrownErrors.length=0,e;if(typeof a==`object`&&a&&typeof a.then==`function`){var o=a;return ye(function(){i||Z||(Z=!0,console.error(`You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);`))}),{then:function(e,a){i=!0,o.then(function(i){if(j(t,n),n===0){try{N(r),k(function(){return M(i,e,a)})}catch(e){q.thrownErrors.push(e)}if(0<q.thrownErrors.length){var o=A(q.thrownErrors);q.thrownErrors.length=0,a(o)}}else e(i)},function(e){j(t,n),0<q.thrownErrors.length?(e=A(q.thrownErrors),q.thrownErrors.length=0,a(e)):a(e)})}}}var s=a;if(j(t,n),n===0&&(N(r),r.length!==0&&ye(function(){i||Z||(Z=!0,console.error("A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\n\nawait act(() => ...)"))}),q.actQueue=null),0<q.thrownErrors.length)throw e=A(q.thrownErrors),q.thrownErrors.length=0,e;return{then:function(e,t){i=!0,n===0?(q.actQueue=r,k(function(){return M(s,e,t)})):e(s)}}},e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.captureOwnerStack=function(){var e=q.getCurrentStack;return e===null?null:e()},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=U({},e.props),i=e.key,a=e._owner;if(t!=null){var o;a:{if(J.call(t,`ref`)&&(o=Object.getOwnPropertyDescriptor(t,`ref`).get)&&o.isReactWarning){o=!1;break a}o=t.ref!==void 0}for(s in o&&(a=p()),h(t)&&(u(t.key),i=``+t.key),t)!J.call(t,s)||s===`key`||s===`__self`||s===`__source`||s===`ref`&&t.ref===void 0||(r[s]=t[s])}var s=arguments.length-2;if(s===1)r.children=n;else if(1<s){o=Array(s);for(var c=0;c<s;c++)o[c]=arguments[c+2];r.children=o}for(r=v(e.type,i,r,a,e._debugStack,e._debugTask),i=2;i<arguments.length;i++)b(arguments[i]);return r},e.createContext=function(e){return e={$$typeof:ne,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:R,_context:e},e._currentRenderer=null,e._currentRenderer2=null,e},e.createElement=function(e,t,n){for(var r=2;r<arguments.length;r++)b(arguments[r]);r={};var i=null;if(t!=null)for(c in de||!(`__self`in t)||`key`in t||(de=!0,console.warn(`Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform`)),h(t)&&(u(t.key),i=``+t.key),t)J.call(t,c)&&c!==`key`&&c!==`__self`&&c!==`__source`&&(r[c]=t[c]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];Object.freeze&&Object.freeze(o),r.children=o}if(e&&e.defaultProps)for(c in a=e.defaultProps,a)r[c]===void 0&&(r[c]=a[c]);i&&g(r,typeof e==`function`?e.displayName||e.name||`Unknown`:e);var c=1e4>q.recentlyCreatedOwnerStacks++;return v(e,i,r,p(),c?Error(`react-stack-top-frame`):pe,c?le(f(e)):me)},e.createRef=function(){var e={current:null};return Object.seal(e),e},e.forwardRef=function(e){e!=null&&e.$$typeof===B?console.error("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."):typeof e==`function`?e.length!==0&&e.length!==2&&console.error(`forwardRef render functions accept exactly two parameters: props and ref. %s`,e.length===1?`Did you forget to use the ref parameter?`:`Any additional parameter will be undefined.`):console.error(`forwardRef requires a render function but was given %s.`,e===null?`null`:typeof e),e!=null&&e.defaultProps!=null&&console.error(`forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?`);var t={$$typeof:re,render:e},n;return Object.defineProperty(t,`displayName`,{enumerable:!1,configurable:!0,get:function(){return n},set:function(t){n=t,e.name||e.displayName||(Object.defineProperty(e,`name`,{value:t}),e.displayName=t)}}),t},e.isValidElement=x,e.lazy=function(e){e={_status:-1,_result:e};var t={$$typeof:V,_payload:e,_init:ee},n={name:`lazy`,start:-1,end:-1,value:null,owner:null,debugStack:Error(`react-stack-top-frame`),debugTask:console.createTask?console.createTask(`lazy()`):null};return e._ioInfo=n,t._debugInfo=[{awaited:n}],t},e.memo=function(e,t){e??console.error(`memo: The first argument must be a component. Instead received: %s`,e===null?`null`:typeof e),t={$$typeof:B,type:e,compare:t===void 0?null:t};var n;return Object.defineProperty(t,`displayName`,{enumerable:!1,configurable:!0,get:function(){return n},set:function(t){n=t,e.name||e.displayName||(Object.defineProperty(e,`name`,{value:t}),e.displayName=t)}}),t},e.startTransition=function(e){var t=q.T,n={};n._updatedFibers=new Set,q.T=n;try{var r=e(),i=q.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&(q.asyncTransitions++,r.then(O,O),r.then(c,_e))}catch(e){_e(e)}finally{t===null&&n._updatedFibers&&(e=n._updatedFibers.size,n._updatedFibers.clear(),10<e&&console.warn(`Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.`)),t!==null&&n.types!==null&&(t.types!==null&&t.types!==n.types&&console.error(`We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React.`),t.types=n.types),q.T=t}},e.unstable_useCacheRefresh=function(){return D().useCacheRefresh()},e.use=function(e){return D().use(e)},e.useActionState=function(e,t,n){return D().useActionState(e,t,n)},e.useCallback=function(e,t){return D().useCallback(e,t)},e.useContext=function(e){var t=D();return e.$$typeof===R&&console.error(`Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?`),t.useContext(e)},e.useDebugValue=function(e,t){return D().useDebugValue(e,t)},e.useDeferredValue=function(e,t){return D().useDeferredValue(e,t)},e.useEffect=function(e,t){return e??console.warn(`React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?`),D().useEffect(e,t)},e.useEffectEvent=function(e){return D().useEffectEvent(e)},e.useId=function(){return D().useId()},e.useImperativeHandle=function(e,t,n){return D().useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return e??console.warn(`React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?`),D().useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return e??console.warn(`React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?`),D().useLayoutEffect(e,t)},e.useMemo=function(e,t){return D().useMemo(e,t)},e.useOptimistic=function(e,t){return D().useOptimistic(e,t)},e.useReducer=function(e,t,n){return D().useReducer(e,t,n)},e.useRef=function(e){return D().useRef(e)},e.useState=function(e){return D().useState(e)},e.useSyncExternalStore=function(e,t,n){return D().useSyncExternalStore(e,t,n)},e.useTransition=function(){return D().useTransition()},e.version=`19.2.4`,typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop==`function`&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()})),r=e(((e,r)=>{process.env.NODE_ENV===`production`?r.exports=t():r.exports=n()}));export{r as t};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
2
|
+
//#region packages/kb-client/dist/types.d.ts
|
|
3
|
+
//#region packages/kb-client/src/types.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* IKBClient — Unified data access interface for KB consumers.
|
|
6
|
+
*
|
|
7
|
+
* Implemented by:
|
|
8
|
+
* - DirectKBClient (in-process, used by TUI)
|
|
9
|
+
* - McpKBClient (over MCP transport, used by Dashboard)
|
|
10
|
+
*/
|
|
11
|
+
interface KBStatus {
|
|
12
|
+
totalRecords: number;
|
|
13
|
+
totalFiles: number;
|
|
14
|
+
lastIndexedAt: string | null;
|
|
15
|
+
onboarded: boolean;
|
|
16
|
+
}
|
|
17
|
+
interface KBSearchResult {
|
|
18
|
+
sourcePath: string;
|
|
19
|
+
contentType: string;
|
|
20
|
+
score: number;
|
|
21
|
+
content: string;
|
|
22
|
+
headingPath?: string;
|
|
23
|
+
startLine?: number;
|
|
24
|
+
endLine?: number;
|
|
25
|
+
}
|
|
26
|
+
interface KBKnowledgeEntry {
|
|
27
|
+
path: string;
|
|
28
|
+
title: string;
|
|
29
|
+
category: string;
|
|
30
|
+
tags: string[];
|
|
31
|
+
content: string;
|
|
32
|
+
}
|
|
33
|
+
interface KBGraphData {
|
|
34
|
+
nodes: Array<{
|
|
35
|
+
id: string;
|
|
36
|
+
name: string;
|
|
37
|
+
type: string;
|
|
38
|
+
sourcePath?: string;
|
|
39
|
+
}>;
|
|
40
|
+
edges: Array<{
|
|
41
|
+
fromId: string;
|
|
42
|
+
toId: string;
|
|
43
|
+
type: string;
|
|
44
|
+
}>;
|
|
45
|
+
}
|
|
46
|
+
interface IKBClient {
|
|
47
|
+
/** Get KB status. */
|
|
48
|
+
getStatus(): Promise<KBStatus>;
|
|
49
|
+
/** Search the knowledge base. */
|
|
50
|
+
search(query: string, options?: {
|
|
51
|
+
limit?: number;
|
|
52
|
+
mode?: 'hybrid' | 'semantic' | 'keyword';
|
|
53
|
+
}): Promise<KBSearchResult[]>;
|
|
54
|
+
/** List curated knowledge entries. */
|
|
55
|
+
listKnowledge(): Promise<KBKnowledgeEntry[]>;
|
|
56
|
+
/** Read a specific curated entry. */
|
|
57
|
+
readKnowledge(path: string): Promise<KBKnowledgeEntry | null>;
|
|
58
|
+
/** Get knowledge graph data. */
|
|
59
|
+
getGraph(query?: string): Promise<KBGraphData>;
|
|
60
|
+
/** Get file tree of indexed sources. */
|
|
61
|
+
getFileTree(): Promise<string[]>;
|
|
62
|
+
} //#endregion
|
|
63
|
+
//#endregion
|
|
64
|
+
export { IKBClient as t };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
2
|
+
import{r as e}from"./chunk-D6axbAb-.js";import{t}from"./react-D__J1GQe.js";var n=e(t(),1);const r=(0,n.createContext)(null),i=r.Provider;function a(){let e=(0,n.useContext)(r);if(!e)throw Error(`useKBClient must be used within KBClientProvider`);return e}export{a as n,i as t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
2
|
+
import{r as e}from"./chunk-D6axbAb-.js";import{t}from"./react-D__J1GQe.js";var n=e(t(),1);function r(e,t){let[r,i]=(0,n.useState)(null),[a,o]=(0,n.useState)(null),s=(0,n.useRef)(e);return s.current=e,(0,n.useEffect)(()=>{let e=!0,n=!1,r=async()=>{if(!n){n=!0;try{let t=await s.current();e&&(i(t),o(null))}catch(t){e&&o(t instanceof Error?t:Error(String(t)))}finally{n=!1}}};r();let a=setInterval(()=>{r()},t);return()=>{e=!1,clearInterval(a)}},[t]),{data:r,error:a}}export{r as t};
|
|
@@ -20,7 +20,7 @@ import { AGENTS } from '../definitions/agents.mjs';
|
|
|
20
20
|
import { AGENT_BODIES } from '../definitions/bodies.mjs';
|
|
21
21
|
import { MODELS, VARIANT_GROUPS } from '../definitions/models.mjs';
|
|
22
22
|
import { PROMPTS } from '../definitions/prompts.mjs';
|
|
23
|
-
import { PROTOCOLS } from '../definitions/protocols.mjs';
|
|
23
|
+
import { PROTOCOLS, TEMPLATES } from '../definitions/protocols.mjs';
|
|
24
24
|
import { IDE_CAPABILITIES } from '../definitions/tools.mjs';
|
|
25
25
|
|
|
26
26
|
// ─── Copilot tool mapping ─────────────────────────────────────────────────
|
|
@@ -35,7 +35,7 @@ const COPILOT_TOOL_MAP = {
|
|
|
35
35
|
createFile: 'edit/createFile',
|
|
36
36
|
editFiles: 'edit/editFiles',
|
|
37
37
|
search: 'search/changes, search/codebase, search/usages',
|
|
38
|
-
web: 'web/fetch, web/githubRepo,
|
|
38
|
+
web: 'web/fetch, web/githubRepo, ms-vscode.vscode-websearchforcopilot/websearch',
|
|
39
39
|
todo: 'todo',
|
|
40
40
|
memory: 'vscode/memory',
|
|
41
41
|
runCommand: 'vscode/runCommand',
|
|
@@ -47,12 +47,13 @@ const COPILOT_TOOL_MAP = {
|
|
|
47
47
|
listDir: 'search/listDirectory',
|
|
48
48
|
textSearch: 'search/textSearch',
|
|
49
49
|
searchResults: 'search/searchResults',
|
|
50
|
+
browser: 'browser/*',
|
|
50
51
|
};
|
|
51
52
|
|
|
52
53
|
function buildToolsYaml(toolRole) {
|
|
53
54
|
const capabilities = IDE_CAPABILITIES[toolRole] || [];
|
|
54
55
|
const copilotTools = capabilities.map((cap) => COPILOT_TOOL_MAP[cap]).filter(Boolean);
|
|
55
|
-
// Use server wildcard instead of listing all
|
|
56
|
+
// Use server wildcard instead of listing all 67 tools individually.
|
|
56
57
|
// VS Code expands `<server-name>/*` to all tools from that MCP server.
|
|
57
58
|
return `[${[...copilotTools, 'knowledge-base/*'].join(', ')}]`;
|
|
58
59
|
}
|
|
@@ -104,12 +105,7 @@ function generateVariantAgent(roleName, suffix, def) {
|
|
|
104
105
|
? `\n\n## Skills (load on demand)\n\n| Skill | When to load |\n|-------|--------------|\n${def.skills.map(([s, w]) => `| ${s} | ${w} |`).join('\n')}`
|
|
105
106
|
: '';
|
|
106
107
|
|
|
107
|
-
const
|
|
108
|
-
Researcher: 'The Context Gatherer',
|
|
109
|
-
'Code-Reviewer': 'The Quality Guardian',
|
|
110
|
-
'Architect-Reviewer': 'The Structural Guardian',
|
|
111
|
-
};
|
|
112
|
-
const title = titleMap[roleName] || roleName;
|
|
108
|
+
const title = def.title || roleName;
|
|
113
109
|
|
|
114
110
|
return `---
|
|
115
111
|
description: '${desc}'
|
|
@@ -131,18 +127,7 @@ function generateSingleAgent(name, def) {
|
|
|
131
127
|
? AGENT_BODIES[name](buildAgentTable())
|
|
132
128
|
: AGENT_BODIES[name] || '';
|
|
133
129
|
|
|
134
|
-
const
|
|
135
|
-
Orchestrator: 'The Master Conductor',
|
|
136
|
-
Planner: 'The Strategic Architect',
|
|
137
|
-
Implementer: 'The Code Builder',
|
|
138
|
-
Frontend: 'The UI Specialist',
|
|
139
|
-
Debugger: 'The Problem Solver',
|
|
140
|
-
Refactor: 'The Code Sculptor',
|
|
141
|
-
Security: 'The Vulnerability Hunter',
|
|
142
|
-
Documenter: 'The Knowledge Keeper',
|
|
143
|
-
Explorer: 'The Rapid Scout',
|
|
144
|
-
};
|
|
145
|
-
const title = titleMap[name] || name;
|
|
130
|
+
const title = def.title || name;
|
|
146
131
|
|
|
147
132
|
return `---
|
|
148
133
|
description: '${def.description}'
|
|
@@ -174,64 +159,6 @@ ${def.content}
|
|
|
174
159
|
`;
|
|
175
160
|
}
|
|
176
161
|
|
|
177
|
-
// ─── Templates ────────────────────────────────────────────────────────────
|
|
178
|
-
|
|
179
|
-
const EXECUTION_STATE = `# Execution State: {Task Title}
|
|
180
|
-
|
|
181
|
-
**Status:** PLANNING | IN_PROGRESS | REVIEW | COMPLETED | BLOCKED
|
|
182
|
-
**Started:** {timestamp}
|
|
183
|
-
**Plan:** {link to plan file}
|
|
184
|
-
|
|
185
|
-
## Phases
|
|
186
|
-
|
|
187
|
-
| # | Title | Agent | Status | Batch |
|
|
188
|
-
|---|-------|-------|--------|-------|
|
|
189
|
-
|
|
190
|
-
## Current Batch
|
|
191
|
-
|
|
192
|
-
**Batch {N}:** {phases in this batch}
|
|
193
|
-
**Status:** IMPLEMENTING | REVIEWING | APPROVED
|
|
194
|
-
|
|
195
|
-
## Decisions Log
|
|
196
|
-
|
|
197
|
-
| Decision | Rationale | ADR |
|
|
198
|
-
|----------|-----------|-----|
|
|
199
|
-
|
|
200
|
-
## Blockers
|
|
201
|
-
|
|
202
|
-
| Issue | Severity | Assigned |
|
|
203
|
-
|-------|----------|----------|
|
|
204
|
-
`;
|
|
205
|
-
|
|
206
|
-
const ADR_TEMPLATE = `# DR-NNN: {Short Title}
|
|
207
|
-
|
|
208
|
-
**Status:** Proposed | Accepted | Rejected | Deprecated | Superseded
|
|
209
|
-
**Date:** YYYY-MM-DD
|
|
210
|
-
**Participants:** {which Researcher variants participated}
|
|
211
|
-
|
|
212
|
-
## Context
|
|
213
|
-
{What is the issue? Why are we making this decision?}
|
|
214
|
-
{If superseding, link: "Supersedes DR-NNN."}
|
|
215
|
-
|
|
216
|
-
## Decision
|
|
217
|
-
{What was decided and why — 2-5 sentences max}
|
|
218
|
-
|
|
219
|
-
## Decision Analysis Summary
|
|
220
|
-
| Model | Recommendation | Key Reasoning |
|
|
221
|
-
|-------|---------------|---------------|
|
|
222
|
-
|
|
223
|
-
**Agreements:** {what 3+ models agreed on}
|
|
224
|
-
**Disagreements:** {where they diverged}
|
|
225
|
-
|
|
226
|
-
## Consequences
|
|
227
|
-
**Positive:** {benefits}
|
|
228
|
-
**Negative:** {trade-offs accepted}
|
|
229
|
-
**Risks:** {what could go wrong, and any mitigations}
|
|
230
|
-
|
|
231
|
-
## Alternatives Considered
|
|
232
|
-
{Other approaches evaluated and why they were rejected — keeps the "why not" alongside the "why"}
|
|
233
|
-
`;
|
|
234
|
-
|
|
235
162
|
// ─── README generator ─────────────────────────────────────────────────────
|
|
236
163
|
|
|
237
164
|
function generateReadme() {
|
|
@@ -310,8 +237,9 @@ export function generateCopilot() {
|
|
|
310
237
|
}
|
|
311
238
|
|
|
312
239
|
// Templates
|
|
313
|
-
|
|
314
|
-
|
|
240
|
+
for (const [name, content] of Object.entries(TEMPLATES)) {
|
|
241
|
+
files.push({ path: `agents/templates/${name}.md`, content: `${content}\n` });
|
|
242
|
+
}
|
|
315
243
|
|
|
316
244
|
// README
|
|
317
245
|
files.push({ path: 'agents/README.md', content: generateReadme() });
|
|
@@ -13,6 +13,7 @@ export const AGENTS = {
|
|
|
13
13
|
// ─── Orchestration ────────────────────────────────────────────────────
|
|
14
14
|
|
|
15
15
|
Orchestrator: {
|
|
16
|
+
title: 'The Master Conductor',
|
|
16
17
|
description:
|
|
17
18
|
'Master conductor that orchestrates the full development lifecycle: Planning → Implementation → Review → Recovery → Commit',
|
|
18
19
|
argumentHint: null,
|
|
@@ -22,6 +23,7 @@ export const AGENTS = {
|
|
|
22
23
|
},
|
|
23
24
|
|
|
24
25
|
Planner: {
|
|
26
|
+
title: 'The Strategic Architect',
|
|
25
27
|
description:
|
|
26
28
|
'Autonomous planner that researches codebases and writes comprehensive TDD implementation plans',
|
|
27
29
|
argumentHint: null,
|
|
@@ -33,6 +35,7 @@ export const AGENTS = {
|
|
|
33
35
|
// ─── Implementation ───────────────────────────────────────────────────
|
|
34
36
|
|
|
35
37
|
Implementer: {
|
|
38
|
+
title: 'The Code Builder',
|
|
36
39
|
description:
|
|
37
40
|
'Persistent implementation agent that writes code following TDD practices until all tasks are complete',
|
|
38
41
|
argumentHint: 'Implementation task, feature, or phase from plan',
|
|
@@ -42,6 +45,7 @@ export const AGENTS = {
|
|
|
42
45
|
},
|
|
43
46
|
|
|
44
47
|
Frontend: {
|
|
48
|
+
title: 'The UI Specialist',
|
|
45
49
|
description:
|
|
46
50
|
'UI/UX specialist for React, styling, responsive design, and frontend implementation',
|
|
47
51
|
argumentHint: 'UI component, styling task, or frontend feature',
|
|
@@ -51,6 +55,7 @@ export const AGENTS = {
|
|
|
51
55
|
},
|
|
52
56
|
|
|
53
57
|
Refactor: {
|
|
58
|
+
title: 'The Code Sculptor',
|
|
54
59
|
description:
|
|
55
60
|
'Code refactoring specialist that improves structure, readability, and maintainability',
|
|
56
61
|
argumentHint: 'Code, component, or pattern to refactor',
|
|
@@ -62,6 +67,7 @@ export const AGENTS = {
|
|
|
62
67
|
// ─── Diagnostics ──────────────────────────────────────────────────────
|
|
63
68
|
|
|
64
69
|
Debugger: {
|
|
70
|
+
title: 'The Problem Solver',
|
|
65
71
|
description: 'Expert debugger that diagnoses issues, traces errors, and provides solutions',
|
|
66
72
|
argumentHint: 'Error message, stack trace, or description of issue',
|
|
67
73
|
toolRole: 'debugger',
|
|
@@ -70,6 +76,7 @@ export const AGENTS = {
|
|
|
70
76
|
},
|
|
71
77
|
|
|
72
78
|
Security: {
|
|
79
|
+
title: 'The Vulnerability Hunter',
|
|
73
80
|
description: 'Security specialist that analyzes code for vulnerabilities and compliance',
|
|
74
81
|
argumentHint: 'Code, feature, or component to security review',
|
|
75
82
|
toolRole: 'security',
|
|
@@ -80,6 +87,7 @@ export const AGENTS = {
|
|
|
80
87
|
// ─── Documentation ────────────────────────────────────────────────────
|
|
81
88
|
|
|
82
89
|
Documenter: {
|
|
90
|
+
title: 'The Knowledge Keeper',
|
|
83
91
|
description:
|
|
84
92
|
'Documentation specialist that creates and maintains comprehensive project documentation',
|
|
85
93
|
argumentHint: 'Component, API, feature, or area to document',
|
|
@@ -89,6 +97,7 @@ export const AGENTS = {
|
|
|
89
97
|
},
|
|
90
98
|
|
|
91
99
|
Explorer: {
|
|
100
|
+
title: 'The Rapid Scout',
|
|
92
101
|
description:
|
|
93
102
|
'Rapid codebase exploration to find files, usages, dependencies, and structural context',
|
|
94
103
|
argumentHint: 'Find files, usages, and context related to: {topic or goal}',
|
|
@@ -100,6 +109,7 @@ export const AGENTS = {
|
|
|
100
109
|
// ─── Multi-variant roles ──────────────────────────────────────────────
|
|
101
110
|
|
|
102
111
|
Researcher: {
|
|
112
|
+
title: 'The Context Gatherer',
|
|
103
113
|
description:
|
|
104
114
|
'Deep analysis, architecture review, and multi-model decision protocol participant',
|
|
105
115
|
argumentHint: 'Research question, problem statement, or subsystem to investigate',
|
|
@@ -139,6 +149,7 @@ export const AGENTS = {
|
|
|
139
149
|
},
|
|
140
150
|
|
|
141
151
|
'Code-Reviewer': {
|
|
152
|
+
title: 'The Quality Guardian',
|
|
142
153
|
description:
|
|
143
154
|
'Code review specialist analyzing code for quality, security, performance, and maintainability',
|
|
144
155
|
argumentHint: 'File path, PR, or code to review',
|
|
@@ -152,6 +163,7 @@ export const AGENTS = {
|
|
|
152
163
|
},
|
|
153
164
|
|
|
154
165
|
'Architect-Reviewer': {
|
|
166
|
+
title: 'The Structural Guardian',
|
|
155
167
|
description:
|
|
156
168
|
'Reviews architecture for pattern adherence, SOLID compliance, dependency direction, and structural integrity',
|
|
157
169
|
argumentHint: 'Files, PR, or subsystem to architecture-review',
|
|
@@ -38,6 +38,21 @@ Before Planning, determine the routing:
|
|
|
38
38
|
3. **Both?** → Brainstorming skill first. When it reaches unresolved technical choices, escalate those to the decision protocol, then return to the user for design approval.
|
|
39
39
|
4. **Neither?** → Skip to Phase 1: Planning
|
|
40
40
|
|
|
41
|
+
## FORGE Protocol (Orchestrator Responsibilities)
|
|
42
|
+
|
|
43
|
+
Before delegating any implementation task:
|
|
44
|
+
|
|
45
|
+
1. **Classify**: \`forge_classify({ task, files, root_path: "." })\` to determine tier (Floor/Standard/Critical)
|
|
46
|
+
2. **Delegate with tier**: Pass FORGE tier to sub-agents via context:
|
|
47
|
+
> **FORGE Context**: Tier = {tier}. {ceremony requirements}.
|
|
48
|
+
> Evidence map: {taskId}. Safety gates: provenance, commitment, coverage.
|
|
49
|
+
3. **Gate after completion**: Run \`evidence_map({ action: "gate", task_id })\` — YIELD/HOLD/HARD_BLOCK
|
|
50
|
+
4. **Auto-upgrade**: If unknowns reveal contract/security issues during Build, re-classify before next batch
|
|
51
|
+
|
|
52
|
+
Integrate into workflow:
|
|
53
|
+
- Phase 1 step 1: After parsing goal, run forge_classify
|
|
54
|
+
- Phase 2: After each batch's code review, evaluate evidence_map gate
|
|
55
|
+
|
|
41
56
|
## Multi-Model Decision Protocol
|
|
42
57
|
|
|
43
58
|
Launch ALL Researcher variants in parallel with identical framing. Each returns: recommendation, reasoning, trade-offs, risks.
|
|
@@ -91,9 +106,11 @@ For each batch: Implement (parallel) → Code Review → Architecture Review (if
|
|
|
91
106
|
## Planning Workflow
|
|
92
107
|
|
|
93
108
|
1. **KB Recall** — Search for past plans, architecture decisions, known patterns
|
|
94
|
-
2. **FORGE
|
|
95
|
-
3. **
|
|
96
|
-
4. **
|
|
109
|
+
2. **FORGE Classify** — \`forge_classify({ task, files, root_path: "." })\` to determine complexity tier
|
|
110
|
+
3. **FORGE Ground** — \`forge_ground\` to scope map, seed unknowns, load constraints
|
|
111
|
+
4. **Research** — Delegate to Explorer and Researcher agents to gather context
|
|
112
|
+
5. **Auto-upgrade check** — If forge_ground reveals contract-type unknowns or security concerns not caught by initial classify, recommend tier upgrade in plan
|
|
113
|
+
6. **Draft Plan** — Produce a structured plan:
|
|
97
114
|
- 3-10 implementation phases
|
|
98
115
|
- Agent assignments per phase (Implementer, Frontend, Refactor, etc.)
|
|
99
116
|
- TDD steps (write test → fail → implement → pass → lint)
|
|
@@ -107,6 +124,11 @@ For each batch: Implement (parallel) → Code Review → Architecture Review (if
|
|
|
107
124
|
## Plan: {Title}
|
|
108
125
|
{TL;DR: 1-3 sentences}
|
|
109
126
|
|
|
127
|
+
### FORGE Assessment
|
|
128
|
+
- **FORGE Tier**: {Floor | Standard | Critical}
|
|
129
|
+
- **Evidence Map entries needed**: {count}
|
|
130
|
+
- **Critical-path claims**: {list}
|
|
131
|
+
|
|
110
132
|
### Dependency Graph & Parallel Batches
|
|
111
133
|
| Phase | Depends On | Batch |
|
|
112
134
|
|-------|-----------|-------|
|
|
@@ -177,7 +199,7 @@ For each batch: Implement (parallel) → Code Review → Architecture Review (if
|
|
|
177
199
|
## Debugging Protocol
|
|
178
200
|
|
|
179
201
|
1. **KB Recall** — Search for known issues matching this error pattern
|
|
180
|
-
2. **Reproduce** — Confirm the error,
|
|
202
|
+
2. **Reproduce** — Confirm the error, use \`parse_output\` on stack traces and build errors for structured analysis
|
|
181
203
|
3. **Trace** — \`symbol\`, \`trace\`, follow call chains backwards
|
|
182
204
|
4. **Diagnose** — Form hypothesis, gather evidence, identify root cause
|
|
183
205
|
5. **Fix** — Implement the fix, verify with tests
|
|
@@ -222,13 +244,15 @@ For each batch: Implement (parallel) → Code Review → Architecture Review (if
|
|
|
222
244
|
## Security Review Protocol
|
|
223
245
|
|
|
224
246
|
1. **KB Recall** — Search for past security findings and conventions
|
|
225
|
-
2. **
|
|
226
|
-
3. **
|
|
227
|
-
4. **
|
|
228
|
-
5. **
|
|
229
|
-
6. **
|
|
230
|
-
7. **
|
|
231
|
-
8. **
|
|
247
|
+
2. **Audit** — Run \`audit\` for a comprehensive project health check, then \`find\` for specific vulnerability patterns
|
|
248
|
+
3. **OWASP Top 10 Scan** — Check each category systematically
|
|
249
|
+
4. **Dependency Audit** — Check for known CVEs in dependencies
|
|
250
|
+
5. **Secret Detection** — Scan for hardcoded credentials, API keys, tokens
|
|
251
|
+
6. **Auth/AuthZ Review** — Verify access control, session management
|
|
252
|
+
7. **Input Validation** — Check all user inputs for injection vectors
|
|
253
|
+
8. **Impact Analysis** — Use \`trace\` on sensitive functions, \`blast_radius\` on security-critical files
|
|
254
|
+
9. **Report** — Severity-ranked findings with remediation guidance
|
|
255
|
+
10. **Persist** — \`remember\` findings with category \`troubleshooting\`
|
|
232
256
|
|
|
233
257
|
## Severity Levels
|
|
234
258
|
|
|
@@ -266,7 +290,7 @@ For each batch: Implement (parallel) → Code Review → Architecture Review (if
|
|
|
266
290
|
| README | New package/module | Structure, usage, API |
|
|
267
291
|
| API docs | New/changed endpoints | Request/response, examples |
|
|
268
292
|
| Architecture | Design decisions | Context, decision, consequences |
|
|
269
|
-
| Changelog | After implementation | Keep a Changelog format |
|
|
293
|
+
| Changelog | After implementation | \`changelog\` tool, Keep a Changelog format |
|
|
270
294
|
|
|
271
295
|
## Rules
|
|
272
296
|
|
|
@@ -288,8 +312,9 @@ For each batch: Implement (parallel) → Code Review → Architecture Review (if
|
|
|
288
312
|
1. **KB Recall** — \`search\` for existing analysis on this area
|
|
289
313
|
2. **Discover** — Use \`find\`, \`symbol\`, \`scope_map\` to locate relevant files
|
|
290
314
|
3. **Analyze** — Use \`analyze_structure\`, \`analyze_dependencies\`, \`file_summary\`
|
|
291
|
-
4. **
|
|
292
|
-
5. **
|
|
315
|
+
4. **Compress** — Use \`compact\` for targeted file sections, \`digest\` when synthesizing 3+ sources, \`stratum_card\` for files you'll reference repeatedly
|
|
316
|
+
5. **Map** — Build a picture of the subsystem: files, exports, dependencies, call chains
|
|
317
|
+
6. **Report** — Structured findings with file paths and key observations
|
|
293
318
|
|
|
294
319
|
## Exploration Modes
|
|
295
320
|
|