@dv.nghiem/flowdeck 0.4.4 → 0.4.6
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/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/risk-analyst.d.ts.map +1 -1
- package/dist/dashboard/lib/state-reader.d.ts.map +1 -1
- package/dist/dashboard/server.mjs +22 -73
- package/dist/hooks/approval-hook.d.ts.map +1 -1
- package/dist/hooks/event-log-hook.d.ts +30 -0
- package/dist/hooks/event-log-hook.d.ts.map +1 -0
- package/dist/hooks/notifications.d.ts.map +1 -1
- package/dist/hooks/orchestrator-guard-hook.d.ts.map +1 -1
- package/dist/hooks/patch-trust.d.ts +0 -1
- package/dist/hooks/patch-trust.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +627 -1159
- package/dist/lib/impact-radar.d.ts.map +1 -1
- package/dist/lib/research-gate.d.ts +6 -2
- package/dist/lib/research-gate.d.ts.map +1 -1
- package/dist/services/agent-validator.d.ts +1 -1
- package/dist/services/agent-validator.d.ts.map +1 -1
- package/dist/services/event-logger.d.ts +18 -0
- package/dist/services/event-logger.d.ts.map +1 -0
- package/dist/services/supervisor-binding.d.ts.map +1 -1
- package/dist/services/token-metrics.d.ts +1 -1
- package/dist/services/workflow-scorecard.d.ts.map +1 -1
- package/dist/tools/delegate.d.ts +1 -2
- package/dist/tools/delegate.d.ts.map +1 -1
- package/dist/tools/run-pipeline.d.ts +1 -2
- package/dist/tools/run-pipeline.d.ts.map +1 -1
- package/docs/commands/fd-deploy-check.md +1 -5
- package/docs/commands/fd-reflect.md +8 -9
- package/docs/commands/fd-suggest.md +3 -4
- package/docs/concepts/architecture.md +0 -3
- package/docs/concepts/intelligence.md +2 -36
- package/docs/skills/index.md +0 -2
- package/package.json +2 -2
- package/src/commands/fd-deploy-check.md +1 -5
- package/src/commands/fd-reflect.md +4 -6
- package/src/commands/fd-suggest.md +3 -4
- package/src/skills/change-impact-radar/SKILL.md +3 -4
- package/src/skills/confidence-aware-planning/SKILL.md +0 -1
- package/src/skills/patch-trust-score/SKILL.md +3 -5
- package/dist/dashboard/lib/port-finder.test.d.ts +0 -2
- package/dist/dashboard/lib/port-finder.test.d.ts.map +0 -1
- package/dist/hooks/notifications.test.d.ts +0 -14
- package/dist/hooks/notifications.test.d.ts.map +0 -1
- package/dist/hooks/patch-trust.test.d.ts +0 -2
- package/dist/hooks/patch-trust.test.d.ts.map +0 -1
- package/dist/hooks/telemetry-hook.d.ts +0 -33
- package/dist/hooks/telemetry-hook.d.ts.map +0 -1
- package/dist/hooks/telemetry-hook.test.d.ts +0 -2
- package/dist/hooks/telemetry-hook.test.d.ts.map +0 -1
- package/dist/hooks/tool-guard.test.d.ts +0 -2
- package/dist/hooks/tool-guard.test.d.ts.map +0 -1
- package/dist/lib/research-gate.test.d.ts +0 -2
- package/dist/lib/research-gate.test.d.ts.map +0 -1
- package/dist/services/activity-reporter.d.ts +0 -96
- package/dist/services/activity-reporter.d.ts.map +0 -1
- package/dist/services/activity-reporter.test.d.ts +0 -2
- package/dist/services/activity-reporter.test.d.ts.map +0 -1
- package/dist/services/artifact-store.d.ts +0 -39
- package/dist/services/artifact-store.d.ts.map +0 -1
- package/dist/services/artifact-store.test.d.ts +0 -2
- package/dist/services/artifact-store.test.d.ts.map +0 -1
- package/dist/services/codegraph.test.d.ts +0 -2
- package/dist/services/codegraph.test.d.ts.map +0 -1
- package/dist/services/command-validator.test.d.ts +0 -2
- package/dist/services/command-validator.test.d.ts.map +0 -1
- package/dist/services/context-assembler.d.ts +0 -29
- package/dist/services/context-assembler.d.ts.map +0 -1
- package/dist/services/context-assembler.test.d.ts +0 -2
- package/dist/services/context-assembler.test.d.ts.map +0 -1
- package/dist/services/cost-budget.d.ts +0 -53
- package/dist/services/cost-budget.d.ts.map +0 -1
- package/dist/services/cost-budget.test.d.ts +0 -2
- package/dist/services/cost-budget.test.d.ts.map +0 -1
- package/dist/services/cost-estimator.test.d.ts +0 -2
- package/dist/services/cost-estimator.test.d.ts.map +0 -1
- package/dist/services/draft-verifier.d.ts +0 -48
- package/dist/services/draft-verifier.d.ts.map +0 -1
- package/dist/services/draft-verifier.test.d.ts +0 -2
- package/dist/services/draft-verifier.test.d.ts.map +0 -1
- package/dist/services/governance.test.d.ts +0 -11
- package/dist/services/governance.test.d.ts.map +0 -1
- package/dist/services/index.d.ts +0 -25
- package/dist/services/index.d.ts.map +0 -1
- package/dist/services/lazy-rule-loader.test.d.ts +0 -23
- package/dist/services/lazy-rule-loader.test.d.ts.map +0 -1
- package/dist/services/model-router-ext.test.d.ts +0 -2
- package/dist/services/model-router-ext.test.d.ts.map +0 -1
- package/dist/services/model-router.test.d.ts +0 -2
- package/dist/services/model-router.test.d.ts.map +0 -1
- package/dist/services/policy-compiler.d.ts +0 -27
- package/dist/services/policy-compiler.d.ts.map +0 -1
- package/dist/services/preflight-explorer.test.d.ts +0 -25
- package/dist/services/preflight-explorer.test.d.ts.map +0 -1
- package/dist/services/prompt-cache-ext.test.d.ts +0 -2
- package/dist/services/prompt-cache-ext.test.d.ts.map +0 -1
- package/dist/services/prompt-cache.test.d.ts +0 -2
- package/dist/services/prompt-cache.test.d.ts.map +0 -1
- package/dist/services/quick-router.test.d.ts +0 -13
- package/dist/services/quick-router.test.d.ts.map +0 -1
- package/dist/services/recommended-question.test.d.ts +0 -2
- package/dist/services/recommended-question.test.d.ts.map +0 -1
- package/dist/services/rtk-manager.test.d.ts +0 -2
- package/dist/services/rtk-manager.test.d.ts.map +0 -1
- package/dist/services/rtk-policy.test.d.ts +0 -2
- package/dist/services/rtk-policy.test.d.ts.map +0 -1
- package/dist/services/rule-engine.d.ts +0 -29
- package/dist/services/rule-engine.d.ts.map +0 -1
- package/dist/services/rule-engine.test.d.ts +0 -2
- package/dist/services/rule-engine.test.d.ts.map +0 -1
- package/dist/services/services.test.d.ts +0 -2
- package/dist/services/services.test.d.ts.map +0 -1
- package/dist/services/supervisor.test.d.ts +0 -14
- package/dist/services/supervisor.test.d.ts.map +0 -1
- package/dist/services/task-batcher.d.ts +0 -48
- package/dist/services/task-batcher.d.ts.map +0 -1
- package/dist/services/task-batcher.test.d.ts +0 -2
- package/dist/services/task-batcher.test.d.ts.map +0 -1
- package/dist/services/telemetry.d.ts +0 -48
- package/dist/services/telemetry.d.ts.map +0 -1
- package/dist/services/token-budget.d.ts +0 -44
- package/dist/services/token-budget.d.ts.map +0 -1
- package/dist/services/token-budget.test.d.ts +0 -2
- package/dist/services/token-budget.test.d.ts.map +0 -1
- package/dist/services/token-metrics-ext.test.d.ts +0 -2
- package/dist/services/token-metrics-ext.test.d.ts.map +0 -1
- package/dist/services/token-metrics.test.d.ts +0 -2
- package/dist/services/token-metrics.test.d.ts.map +0 -1
- package/dist/tools/agent-dispatch.test.d.ts +0 -2
- package/dist/tools/agent-dispatch.test.d.ts.map +0 -1
- package/dist/tools/codebase-index.test.d.ts +0 -2
- package/dist/tools/codebase-index.test.d.ts.map +0 -1
- package/dist/tools/context-generator.d.ts +0 -3
- package/dist/tools/context-generator.d.ts.map +0 -1
- package/dist/tools/create-skill.d.ts +0 -3
- package/dist/tools/create-skill.d.ts.map +0 -1
- package/dist/tools/dispatch-routing.test.d.ts +0 -2
- package/dist/tools/dispatch-routing.test.d.ts.map +0 -1
- package/dist/tools/failure-replay.test.d.ts +0 -2
- package/dist/tools/failure-replay.test.d.ts.map +0 -1
- package/dist/tools/repo-memory.test.d.ts +0 -2
- package/dist/tools/repo-memory.test.d.ts.map +0 -1
- package/dist/tools/volatility-map.d.ts +0 -18
- package/dist/tools/volatility-map.d.ts.map +0 -1
- package/dist/tools/volatility-map.test.d.ts +0 -2
- package/dist/tools/volatility-map.test.d.ts.map +0 -1
- package/dist/tools/workspace-state.d.ts +0 -3
- package/dist/tools/workspace-state.d.ts.map +0 -1
- package/src/skills/volatility-map/SKILL.md +0 -52
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impact-radar.d.ts","sourceRoot":"","sources":["../../src/lib/impact-radar.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE3D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpD,cAAc,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,EAAE,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC9G,eAAe,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACtE,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAOD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"impact-radar.d.ts","sourceRoot":"","sources":["../../src/lib/impact-radar.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE3D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpD,cAAc,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,EAAE,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC9G,eAAe,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACtE,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAOD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,iBAAiB,CA2CjF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAU1E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,KAAK,SAAI,GACR,YAAY,EAAE,CA0BhB"}
|
|
@@ -73,9 +73,11 @@ export declare function loadResearchEvidence(dir: string, scope: ResearchScope):
|
|
|
73
73
|
*/
|
|
74
74
|
export declare function buildResearchDiagnostics(evidence: ResearchEvidence): ResearchDiagnostics;
|
|
75
75
|
/**
|
|
76
|
-
* Log research diagnostics
|
|
76
|
+
* Log research diagnostics via the provided logger (safe for TUI environments).
|
|
77
|
+
* Defaults to a no-op so raw stdout is never written from the plugin runtime.
|
|
78
|
+
* Pass `logger: console.log` only in non-TUI contexts (e.g. standalone scripts).
|
|
77
79
|
*/
|
|
78
|
-
export declare function logResearchDiagnostics(diags: ResearchDiagnostics): void;
|
|
80
|
+
export declare function logResearchDiagnostics(diags: ResearchDiagnostics, logger?: (msg: string) => void): void;
|
|
79
81
|
/**
|
|
80
82
|
* Perform a research pass for a given scope, checking freshness first.
|
|
81
83
|
*
|
|
@@ -85,6 +87,8 @@ export declare function logResearchDiagnostics(diags: ResearchDiagnostics): void
|
|
|
85
87
|
export declare function runResearchGate(dir: string, scope: ResearchScope, options?: {
|
|
86
88
|
forceRefresh?: boolean;
|
|
87
89
|
customEvidence?: Partial<ResearchEvidence>;
|
|
90
|
+
/** Optional logger for diagnostics. Defaults to no-op to avoid corrupting TUI output. */
|
|
91
|
+
logger?: (msg: string) => void;
|
|
88
92
|
}): Promise<ResearchEvidence>;
|
|
89
93
|
/**
|
|
90
94
|
* Check if a stage should proceed or block based on research gate.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"research-gate.d.ts","sourceRoot":"","sources":["../../src/lib/research-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAA0F,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAGxJ,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;AAEtE,iDAAiD;AACjD,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,KAAK,EAAE,aAAa,CAAA;IACpB,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAA;IACnB,sCAAsC;IACtC,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,sCAAsC;IACtC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,mCAAmC;IACnC,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,0EAA0E;IAC1E,aAAa,EAAE,OAAO,CAAA;IACtB,2EAA2E;IAC3E,kBAAkB,EAAE,OAAO,CAAA;IAC3B,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,0CAA0C;AAC1C,MAAM,WAAW,mBAAmB;IAClC,sBAAsB;IACtB,KAAK,EAAE,aAAa,CAAA;IACpB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,yBAAyB;IACzB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,yBAAyB;IACzB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,0BAA0B;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,kCAAkC;IAClC,aAAa,EAAE,OAAO,CAAA;IACtB,kDAAkD;IAClD,kBAAkB,EAAE,OAAO,CAAA;CAC5B;AAID;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAInF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CA0B3G;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,gBAAgB,GAAG,IAAI,CAa/F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,mBAAmB,CAUxF;AAED
|
|
1
|
+
{"version":3,"file":"research-gate.d.ts","sourceRoot":"","sources":["../../src/lib/research-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAA0F,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAGxJ,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;AAEtE,iDAAiD;AACjD,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,KAAK,EAAE,aAAa,CAAA;IACpB,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAA;IACnB,sCAAsC;IACtC,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,sCAAsC;IACtC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,mCAAmC;IACnC,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,0EAA0E;IAC1E,aAAa,EAAE,OAAO,CAAA;IACtB,2EAA2E;IAC3E,kBAAkB,EAAE,OAAO,CAAA;IAC3B,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,0CAA0C;AAC1C,MAAM,WAAW,mBAAmB;IAClC,sBAAsB;IACtB,KAAK,EAAE,aAAa,CAAA;IACpB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,yBAAyB;IACzB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,yBAAyB;IACzB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,0BAA0B;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,kCAAkC;IAClC,aAAa,EAAE,OAAO,CAAA;IACtB,kDAAkD;IAClD,kBAAkB,EAAE,OAAO,CAAA;CAC5B;AAID;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAInF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CA0B3G;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,gBAAgB,GAAG,IAAI,CAa/F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,mBAAmB,CAUxF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,mBAAmB,EAC1B,MAAM,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAe,GACvC,IAAI,CAUN;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC1C,yFAAyF;IACzF,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B,GACA,OAAO,CAAC,gBAAgB,CAAC,CA0H3B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAQvG"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Agent Validator
|
|
3
3
|
* Validates agent behavior against capability contracts.
|
|
4
|
-
*
|
|
4
|
+
* Returns a decision (allow/warn/block/escalate).
|
|
5
5
|
*/
|
|
6
6
|
export type ValidatorMode = "off" | "advisory" | "strict";
|
|
7
7
|
export type ValidatorAction = "allow" | "warn" | "block" | "escalate";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-validator.d.ts","sourceRoot":"","sources":["../../src/services/agent-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"agent-validator.d.ts","sourceRoot":"","sources":["../../src/services/agent-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAA;AACzD,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAA;AAErE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,eAAe,CAAA;IACvB,UAAU,EAAE,mBAAmB,EAAE,CAAA;IACjC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,uCAAuC;IACvC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,wCAAwC;IACxC,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAQrE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,qBAAqB,GACzB,gBAAgB,CAuFlB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAClD,gBAAgB,CAElB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface ToolEvent {
|
|
2
|
+
timestamp: string;
|
|
3
|
+
type: "tool.before" | "tool.after" | "session.created" | "session.idle" | "session.error" | "agent.delegated";
|
|
4
|
+
agent?: string;
|
|
5
|
+
tool?: string;
|
|
6
|
+
args?: Record<string, unknown>;
|
|
7
|
+
thinking?: string;
|
|
8
|
+
duration_ms?: number;
|
|
9
|
+
status?: "success" | "error" | "blocked";
|
|
10
|
+
error?: string;
|
|
11
|
+
session_id?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function getCurrentAgent(): string | null;
|
|
14
|
+
export declare function setCurrentAgent(agent: string | null): void;
|
|
15
|
+
export declare function sanitizeArgs(args: unknown): Record<string, unknown>;
|
|
16
|
+
export declare function logEvent(directory: string, event: ToolEvent, log?: (msg: string) => void): void;
|
|
17
|
+
export declare function formatEventForStderr(event: ToolEvent): string;
|
|
18
|
+
//# sourceMappingURL=event-logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-logger.d.ts","sourceRoot":"","sources":["../../src/services/event-logger.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,aAAa,GAAG,YAAY,GAAG,iBAAiB,GAAG,cAAc,GAAG,eAAe,GAAG,iBAAiB,CAAA;IAC7G,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;IACxC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAUD,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAE1D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBnE;AAoBD,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAqB/F;AAwBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CA2D7D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervisor-binding.d.ts","sourceRoot":"","sources":["../../src/services/supervisor-binding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"supervisor-binding.d.ts","sourceRoot":"","sources":["../../src/services/supervisor-binding.ts"],"names":[],"mappings":"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"}
|
|
@@ -78,7 +78,7 @@ export declare function recordDuplicateSuppressed(dir: string, workflow_id: stri
|
|
|
78
78
|
export declare function recordRetryCall(dir: string, workflow_id: string, stage: WorkflowStage, inputText: string, outputText: string, agent?: string, duration_ms?: number, model?: string, est_cost_usd?: number): void;
|
|
79
79
|
/**
|
|
80
80
|
* Record a rule-based bypass — a check answered deterministically without a model call.
|
|
81
|
-
* `check_type` identifies which rule-
|
|
81
|
+
* `check_type` identifies which rule-based check was used.
|
|
82
82
|
*/
|
|
83
83
|
export declare function recordRuleBypass(dir: string, workflow_id: string, stage: WorkflowStage, check_type: string, agent?: string): void;
|
|
84
84
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-scorecard.d.ts","sourceRoot":"","sources":["../../src/services/workflow-scorecard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"workflow-scorecard.d.ts","sourceRoot":"","sources":["../../src/services/workflow-scorecard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAK3C,MAAM,WAAW,mBAAmB;IAClC,kEAAkE;IAClE,eAAe,EAAE,MAAM,CAAA;IACvB,uDAAuD;IACvD,qBAAqB,EAAE,MAAM,CAAA;IAC7B,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAA;IACrB,oDAAoD;IACpD,kBAAkB,EAAE,MAAM,CAAA;IAC1B,gDAAgD;IAChD,aAAa,EAAE,MAAM,CAAA;IACrB,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAA;IACvB,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,CAAA;IACxB,0CAA0C;IAC1C,eAAe,EAAE,MAAM,CAAA;IACvB,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAA;IACtB,mCAAmC;IACnC,kBAAkB,EAAE,MAAM,CAAA;IAC1B;;;;OAIG;IACH,oBAAoB,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAA;IAClE,UAAU,EAAE,mBAAmB,CAAA;IAC/B,oDAAoD;IACpD,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,MAAM,CAAA;IACzB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,kDAAkD;IAClD,kBAAkB,EAAE,MAAM,CAAA;IAC1B,4DAA4D;IAC5D,qBAAqB,EAAE,MAAM,CAAA;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B;AAgBD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,QAAQ,EACf,KAAK,GAAE,cAAmB,GACzB,iBAAiB,CAyEnB;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,iBAAiB,EAAE,CAS3E;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAEvF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,iBAAiB,EAAE,CAIhG;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIhF"}
|
package/dist/tools/delegate.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type ToolDefinition } from "@opencode-ai/plugin";
|
|
2
2
|
import type { OpencodeClient } from "@opencode-ai/sdk";
|
|
3
|
-
|
|
4
|
-
export declare function createDelegateTool(client: OpencodeClient, reporter?: ActivityReporter | null): ToolDefinition;
|
|
3
|
+
export declare function createDelegateTool(client: OpencodeClient): ToolDefinition;
|
|
5
4
|
//# sourceMappingURL=delegate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../../src/tools/delegate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../../src/tools/delegate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAkBtD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAqPzE"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type ToolDefinition } from "@opencode-ai/plugin";
|
|
2
2
|
import type { OpencodeClient } from "@opencode-ai/sdk";
|
|
3
|
-
|
|
4
|
-
export declare function createRunPipelineTool(client: OpencodeClient, reporter?: ActivityReporter | null): ToolDefinition;
|
|
3
|
+
export declare function createRunPipelineTool(client: OpencodeClient): ToolDefinition;
|
|
5
4
|
//# sourceMappingURL=run-pipeline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-pipeline.d.ts","sourceRoot":"","sources":["../../src/tools/run-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"run-pipeline.d.ts","sourceRoot":"","sources":["../../src/tools/run-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AA8BtD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAuI5E"}
|
|
@@ -88,8 +88,7 @@ Determine scope (files changed since last commit or provided scope). Spawn three
|
|
|
88
88
|
2. **Blast Radius** — downstream consequences and hidden couplings
|
|
89
89
|
3. **Regression Predict** — most likely regression categories
|
|
90
90
|
4. **Test Gap** — coverage gaps to fill before implementing
|
|
91
|
-
5. **
|
|
92
|
-
6. **Review Route** — who should review this change
|
|
91
|
+
5. **Review Route** — who should review this change
|
|
93
92
|
|
|
94
93
|
```
|
|
95
94
|
════════════════════════════════════════════════════
|
|
@@ -110,9 +109,6 @@ TEST GAPS (<N> gaps found)
|
|
|
110
109
|
- CRITICAL: <gap>
|
|
111
110
|
- HIGH: <gap>
|
|
112
111
|
|
|
113
|
-
VOLATILITY
|
|
114
|
-
Hot zones touched: <list or "none">
|
|
115
|
-
|
|
116
112
|
REVIEW ROUTING
|
|
117
113
|
→ <reviewer type> (<reason>)
|
|
118
114
|
|
|
@@ -19,13 +19,11 @@
|
|
|
19
19
|
- What knowledge was absent and had to be worked out from scratch?
|
|
20
20
|
|
|
21
21
|
3. **Produce improvement proposals.**
|
|
22
|
-
- **New skill** →
|
|
22
|
+
- **New skill** → write it manually to `src/skills/<name>/SKILL.md` (see Skill File Structure below)
|
|
23
23
|
- **Policy** → propose a new entry in `.codebase/POLICIES.json` for user review
|
|
24
24
|
- **Workflow change** → note it clearly for user to decide
|
|
25
25
|
|
|
26
|
-
4. **
|
|
27
|
-
|
|
28
|
-
5. **Final report.** Provide:
|
|
26
|
+
4. **Final report.** Provide:
|
|
29
27
|
- What was captured (new skills created)
|
|
30
28
|
- What requires human review (policy proposals, workflow changes)
|
|
31
29
|
- 3-5 bullet summary of the session's most impactful learnings
|
|
@@ -48,11 +46,12 @@
|
|
|
48
46
|
|
|
49
47
|
3. **Choose a name.** Use `$ARGUMENTS` if provided as skill name; otherwise derive a kebab-case name from the pattern.
|
|
50
48
|
|
|
51
|
-
4. **Write the skill**
|
|
52
|
-
- `name
|
|
53
|
-
- `
|
|
54
|
-
- `
|
|
55
|
-
- `
|
|
49
|
+
4. **Write the skill** to `src/skills/<name>/SKILL.md` with:
|
|
50
|
+
- YAML frontmatter (`name`, `description`, `origin`)
|
|
51
|
+
- `## When to Activate` — concrete triggers (e.g., "when X file pattern exists", "when user asks about Y")
|
|
52
|
+
- `## Steps` — ordered, concrete steps to apply the skill
|
|
53
|
+
- `## Examples` — at least one short concrete example
|
|
54
|
+
- `## Pitfalls` — common mistakes to avoid
|
|
56
55
|
|
|
57
56
|
5. **Report** what was captured, why it is useful, and remind the user to restart OpenCode to activate it.
|
|
58
57
|
|
|
@@ -23,10 +23,9 @@ Check if `.planning/` directory exists:
|
|
|
23
23
|
|
|
24
24
|
Execute tools to gather insight data:
|
|
25
25
|
|
|
26
|
-
1. **
|
|
27
|
-
2. **
|
|
28
|
-
3. **
|
|
29
|
-
4. **Codebase State** — `codebase-state` tool to get overall project structure
|
|
26
|
+
1. **Decision Trace** — `decision-trace` tool to find incomplete or TODO decisions
|
|
27
|
+
2. **Failure Replay** — `failure-replay` tool to find recurring failure patterns
|
|
28
|
+
3. **Codebase State** — `codebase-state` tool to get overall project structure
|
|
30
29
|
|
|
31
30
|
### Step 3: Scan for Gaps
|
|
32
31
|
|
|
@@ -136,17 +136,14 @@ FlowDeck registers these tools for use by agents and commands:
|
|
|
136
136
|
|------|---------|
|
|
137
137
|
| `planning-state` | Read/write `.planning/STATE.md` |
|
|
138
138
|
| `codebase-state` | Read/write `.codebase/` state files |
|
|
139
|
-
| `workspace-state` | Snapshot workspace files and git status |
|
|
140
139
|
| `run-pipeline` | Execute a defined pipeline of agent steps |
|
|
141
140
|
| `delegate` | Invoke a named specialist agent |
|
|
142
141
|
| `council` | Run multiple agents and synthesize consensus |
|
|
143
|
-
| `volatility-map` | Compute change frequency per file |
|
|
144
142
|
| `failure-replay` | Reproduce and trace a prior failure |
|
|
145
143
|
| `decision-trace` | Record and replay decision rationale |
|
|
146
144
|
| `hash-edit` | Compute a content hash for an edit |
|
|
147
145
|
| `policy-engine` | Evaluate agent actions against project rules |
|
|
148
146
|
| `repo-memory` | Persistent memory across sessions |
|
|
149
|
-
| `context-generator` | Generate focused context summaries |
|
|
150
147
|
| `codegraph` | Query codebase structure from indexed graph |
|
|
151
148
|
|
|
152
149
|
## Plugin Initialization
|
|
@@ -12,7 +12,6 @@ The score is computed from:
|
|
|
12
12
|
|
|
13
13
|
| Factor | Weight | What it measures |
|
|
14
14
|
|--------|--------|-----------------|
|
|
15
|
-
| File volatility | 25% | Historical change frequency from `.codebase/VOLATILITY.json` |
|
|
16
15
|
| Edit scope | 20% | Lines changed vs. file total — large rewrites score lower |
|
|
17
16
|
| Context window pressure | 15% | Remaining context space — edits under pressure score lower |
|
|
18
17
|
| Agent history | 20% | Historical failure rate of the calling agent on this file |
|
|
@@ -28,37 +27,6 @@ The `@policy-enforcer` agent is invoked automatically when the score is below th
|
|
|
28
27
|
|
|
29
28
|
---
|
|
30
29
|
|
|
31
|
-
## Volatility Map
|
|
32
|
-
|
|
33
|
-
The **volatility map** tracks change frequency per file over the session and across sessions. It is maintained by the `volatility-map` tool and stored in `.codebase/VOLATILITY.json`.
|
|
34
|
-
|
|
35
|
-
```json
|
|
36
|
-
{
|
|
37
|
-
"src/auth/login.ts": {
|
|
38
|
-
"changeCount": 7,
|
|
39
|
-
"lastChanged": "2026-05-26T09:30:00Z",
|
|
40
|
-
"avgRevisionsPerSession": 3.2,
|
|
41
|
-
"risk": "high"
|
|
42
|
-
},
|
|
43
|
-
"src/config/default.ts": {
|
|
44
|
-
"changeCount": 1,
|
|
45
|
-
"lastChanged": "2026-05-25T14:00:00Z",
|
|
46
|
-
"avgRevisionsPerSession": 0.4,
|
|
47
|
-
"risk": "low"
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
Files with high volatility:
|
|
53
|
-
|
|
54
|
-
- Receive lower Patch Trust Scores automatically
|
|
55
|
-
- Trigger `@risk-analyst` review before large refactors
|
|
56
|
-
- Are flagged in the Workflow Scorecard under `context_preserved` if they change frequently within a single session
|
|
57
|
-
|
|
58
|
-
The volatility map is rebuilt on first session start and incrementally updated on each `edit` tool call.
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
30
|
## Failure Replay
|
|
63
31
|
|
|
64
32
|
When a task fails (test failure, build error, runtime crash), the **failure replay** service can reproduce the failure in isolation to generate a clean diagnostic trace.
|
|
@@ -95,9 +63,8 @@ Before a plan is executed, the **regression predictor** evaluates the planned ch
|
|
|
95
63
|
|
|
96
64
|
The predictor runs as a pre-execution check in `/fd-execute`:
|
|
97
65
|
|
|
98
|
-
1.
|
|
99
|
-
2.
|
|
100
|
-
3. Assign a regression probability score (0.0–1.0) per task and per wave
|
|
66
|
+
1. Cross-reference with historical failure data in `SCORECARDS.jsonl` — if similar changes broke tests before, flag the task
|
|
67
|
+
2. Assign a regression probability score (0.0–1.0) per task and per wave
|
|
101
68
|
|
|
102
69
|
**Output appended to PLAN.md:**
|
|
103
70
|
|
|
@@ -137,7 +104,6 @@ Phase gating is implemented by the `guard-rails` hook running in `tool.execute.b
|
|
|
137
104
|
| Tool / Hook | Service | Purpose |
|
|
138
105
|
|-------------|---------|---------|
|
|
139
106
|
| `patch-trust` hook | Patch Trust Score | Score edits before application |
|
|
140
|
-
| `volatility-map` tool + hook | Volatility Map | Track per-file change frequency |
|
|
141
107
|
| `failure-replay` tool | Failure Replay | Reproduce and trace prior failures |
|
|
142
108
|
| Regression predictor (in `/fd-plan`) | Regression Prediction | Score planned changes for breakage risk |
|
|
143
109
|
| `guard-rails` hook | Phase Gating | Enforce workflow discipline at phase boundaries |
|
package/docs/skills/index.md
CHANGED
|
@@ -67,7 +67,6 @@ Source files live in `src/skills/<name>/SKILL.md` in the project repository.
|
|
|
67
67
|
| Skill | Description |
|
|
68
68
|
|-------|-------------|
|
|
69
69
|
| `performance-profiling` | Identifies hot paths and memory bottlenecks from profiling data |
|
|
70
|
-
| `volatility-map` | Maps codebase areas by change frequency to predict impact zones |
|
|
71
70
|
| `blast-radius-preview` | Estimates blast radius of a proposed change before it is merged |
|
|
72
71
|
| `dependency-audit` | Scans for outdated, vulnerable, or circular dependencies |
|
|
73
72
|
|
|
@@ -108,7 +107,6 @@ Source files live in `src/skills/<name>/SKILL.md` in the project repository.
|
|
|
108
107
|
| `regression-prediction` | Predicts which files are likely to break from a given change |
|
|
109
108
|
| `repo-memory-graph` | Builds a semantic graph of codebase knowledge |
|
|
110
109
|
| `decision-trace` | Records decision rationale for future review |
|
|
111
|
-
| `volatility-map` | Maps change frequency to identify stable vs. volatile areas |
|
|
112
110
|
|
|
113
111
|
### Workflow
|
|
114
112
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dv.nghiem/flowdeck",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.6",
|
|
4
4
|
"description": "FlowDeck — structured planning and execution workflows for OpenCode",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
],
|
|
26
26
|
"scripts": {
|
|
27
27
|
"clean": "rm -rf dist",
|
|
28
|
-
"build": "bun build src/index.ts --outdir dist --target node --format esm --external @opencode-ai/plugin --external @opencode-ai/sdk && tsc --emitDeclarationOnly && bun build src/dashboard/server.ts --outfile dist/dashboard/server.mjs --target bun --format esm && cp -r src/dashboard/views dist/dashboard/views",
|
|
28
|
+
"build": "bun build src/index.ts --outdir dist --target node --format esm --external @opencode-ai/plugin --external @opencode-ai/sdk && tsc --emitDeclarationOnly --project tsconfig.build.json && bun build src/dashboard/server.ts --outfile dist/dashboard/server.mjs --target bun --format esm && cp -r src/dashboard/views dist/dashboard/views",
|
|
29
29
|
"postinstall": "node postinstall.mjs",
|
|
30
30
|
"prepublishOnly": "bun run clean && bun run build",
|
|
31
31
|
"test": "bun test",
|
|
@@ -164,8 +164,7 @@ Run all analyses in parallel:
|
|
|
164
164
|
2. **Blast Radius** — downstream consequences and hidden couplings
|
|
165
165
|
3. **Regression Predict** — most likely regression categories
|
|
166
166
|
4. **Test Gap** — coverage gaps to fill before implementing
|
|
167
|
-
5. **
|
|
168
|
-
6. **Review Route** — who should review this change
|
|
167
|
+
5. **Review Route** — who should review this change
|
|
169
168
|
|
|
170
169
|
## Consolidated Analysis Report
|
|
171
170
|
|
|
@@ -188,9 +187,6 @@ TEST GAPS (<N> gaps found)
|
|
|
188
187
|
- CRITICAL: <gap>
|
|
189
188
|
- HIGH: <gap>
|
|
190
189
|
|
|
191
|
-
VOLATILITY
|
|
192
|
-
Hot zones touched: <list or "none">
|
|
193
|
-
|
|
194
190
|
REVIEW ROUTING
|
|
195
191
|
→ <reviewer type> (<reason>)
|
|
196
192
|
|
|
@@ -29,7 +29,7 @@ Capture a repeatable pattern from this session as a reusable FlowDeck skill.
|
|
|
29
29
|
|
|
30
30
|
3. **Produce improvement proposals.** For each pattern or gap found:
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
- **New skill** → manually write it to `src/skills/<name>/SKILL.md`
|
|
33
33
|
- **Policy** → propose a new entry in `.codebase/POLICIES.json` for the user to review
|
|
34
34
|
- **Workflow change** → note it clearly so the user can decide
|
|
35
35
|
|
|
@@ -60,10 +60,8 @@ When `--mode=learn`:
|
|
|
60
60
|
|
|
61
61
|
3. **Choose the skill name.** Use `$ARGUMENTS` if provided as skill name, otherwise derive a kebab-case name from the pattern.
|
|
62
62
|
|
|
63
|
-
4. **Write the skill**
|
|
64
|
-
- `name
|
|
65
|
-
-
|
|
66
|
-
- `content`: the full Markdown body from step 2
|
|
67
|
-
- `tags`: 2–4 relevant tags
|
|
63
|
+
4. **Write the skill** manually to `src/skills/<name>/SKILL.md` with:
|
|
64
|
+
- YAML frontmatter (`name`, `description`, `origin`)
|
|
65
|
+
- The full Markdown body from step 2
|
|
68
66
|
|
|
69
67
|
5. **Report** what was captured, why it is useful, and remind the user to restart OpenCode to activate it.
|
|
@@ -21,10 +21,9 @@ Check if `.planning/` directory exists:
|
|
|
21
21
|
|
|
22
22
|
Execute tools to gather insight data:
|
|
23
23
|
|
|
24
|
-
1. **
|
|
25
|
-
2. **
|
|
26
|
-
3. **
|
|
27
|
-
4. **Codebase State** — `codebase-state` tool to get overall project structure
|
|
24
|
+
1. **Decision Trace** — `decision-trace` tool to find incomplete or TODO decisions
|
|
25
|
+
2. **Failure Replay** — `failure-replay` tool to find recurring failure patterns
|
|
26
|
+
3. **Codebase State** — `codebase-state` tool to get overall project structure
|
|
28
27
|
|
|
29
28
|
### Step 3: Scan for Gaps
|
|
30
29
|
|
|
@@ -23,10 +23,9 @@ Activate before:
|
|
|
23
23
|
2. Read `.codebase/MEMORY.json` to trace the module dependency graph
|
|
24
24
|
3. From the change description, identify all directly affected files
|
|
25
25
|
4. Walk the dependency graph outward from affected files (depth ≤ 3 hops)
|
|
26
|
-
5.
|
|
27
|
-
6.
|
|
28
|
-
7.
|
|
29
|
-
8. Produce the impact map report
|
|
26
|
+
5. Identify test files that cover the affected modules
|
|
27
|
+
6. Flag any database schema, API contracts, or config changes
|
|
28
|
+
7. Produce the impact map report
|
|
30
29
|
|
|
31
30
|
## Impact Map Report Format
|
|
32
31
|
|
|
@@ -23,7 +23,6 @@ Not every task comes with complete information. This skill enforces honest uncer
|
|
|
23
23
|
- Request touches 5+ files with unclear dependencies
|
|
24
24
|
- Request uses domain jargon that doesn't appear in codebase
|
|
25
25
|
- No test coverage in the affected area (no test files found)
|
|
26
|
-
- File is in a volatile or critical zone per `.codebase/VOLATILITY.json`
|
|
27
26
|
|
|
28
27
|
## Workflow
|
|
29
28
|
|
|
@@ -20,7 +20,6 @@ Every AI-generated patch gets a trust score before it is applied. The score gate
|
|
|
20
20
|
|
|
21
21
|
| Signal | Deduction |
|
|
22
22
|
|--------|-----------|
|
|
23
|
-
| File in volatile/critical volatility zone | −25 to −40 |
|
|
24
23
|
| File has prior failure history | −20 |
|
|
25
24
|
| Edit contains auth/crypto/payment keywords | −8 per keyword (max −30) |
|
|
26
25
|
| File in arch-constrained zone | −20 |
|
|
@@ -29,10 +28,9 @@ Every AI-generated patch gets a trust score before it is applied. The score gate
|
|
|
29
28
|
## Workflow
|
|
30
29
|
|
|
31
30
|
1. For every proposed write or edit:
|
|
32
|
-
a.
|
|
33
|
-
b.
|
|
34
|
-
c.
|
|
35
|
-
d. Check `.codebase/CONSTRAINTS.md` for boundary violations
|
|
31
|
+
a. Check `.codebase/FAILURES.json` for prior failures on this file
|
|
32
|
+
b. Scan the patch content for high-risk keywords
|
|
33
|
+
c. Check `.codebase/CONSTRAINTS.md` for boundary violations
|
|
36
34
|
2. Compute score (0–100, start at 100)
|
|
37
35
|
3. Emit verdict with signals
|
|
38
36
|
4. Route accordingly (auto / warn / block)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"port-finder.test.d.ts","sourceRoot":"","sources":["../../../src/dashboard/lib/port-finder.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* NotificationController Tests
|
|
3
|
-
*
|
|
4
|
-
* Covers the core timing contract:
|
|
5
|
-
* - No notification when a command is merely entered (command.execute.before)
|
|
6
|
-
* - Notification fires on session.idle after a completion command
|
|
7
|
-
* - Notification fires on session.idle after an interactive command
|
|
8
|
-
* - Notification fires on session.error
|
|
9
|
-
* - Duplicate notifications are suppressed
|
|
10
|
-
* - Long-running command only notifies at the correct lifecycle point
|
|
11
|
-
* - Generic (non-command) idle notification fires only when edits exist
|
|
12
|
-
*/
|
|
13
|
-
export {};
|
|
14
|
-
//# sourceMappingURL=notifications.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.test.d.ts","sourceRoot":"","sources":["../../src/hooks/notifications.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"patch-trust.test.d.ts","sourceRoot":"","sources":["../../src/hooks/patch-trust.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import type { ActivityReporter } from "../services/activity-reporter";
|
|
2
|
-
export declare function telemetryHook(context: {
|
|
3
|
-
directory?: string;
|
|
4
|
-
}, toolInput: {
|
|
5
|
-
name?: string;
|
|
6
|
-
tool?: string;
|
|
7
|
-
sessionID?: string;
|
|
8
|
-
sessionId?: string;
|
|
9
|
-
messageID?: string;
|
|
10
|
-
messageId?: string;
|
|
11
|
-
runID?: string;
|
|
12
|
-
runId?: string;
|
|
13
|
-
}, output: {
|
|
14
|
-
args?: Record<string, unknown>;
|
|
15
|
-
}, reporter?: ActivityReporter): Promise<void>;
|
|
16
|
-
export declare function telemetryAfterHook(context: {
|
|
17
|
-
directory?: string;
|
|
18
|
-
}, toolInput: {
|
|
19
|
-
name?: string;
|
|
20
|
-
tool?: string;
|
|
21
|
-
sessionID?: string;
|
|
22
|
-
sessionId?: string;
|
|
23
|
-
messageID?: string;
|
|
24
|
-
messageId?: string;
|
|
25
|
-
runID?: string;
|
|
26
|
-
runId?: string;
|
|
27
|
-
}, output: {
|
|
28
|
-
title?: string;
|
|
29
|
-
output?: string;
|
|
30
|
-
metadata?: unknown;
|
|
31
|
-
error?: unknown;
|
|
32
|
-
}, reporter?: ActivityReporter): Promise<void>;
|
|
33
|
-
//# sourceMappingURL=telemetry-hook.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry-hook.d.ts","sourceRoot":"","sources":["../../src/hooks/telemetry-hook.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAsErE,wBAAsB,aAAa,CACjC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,EAC/B,SAAS,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3J,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EAC1C,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,EAC/B,SAAS,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3J,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EAChF,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAgDf"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry-hook.test.d.ts","sourceRoot":"","sources":["../../src/hooks/telemetry-hook.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-guard.test.d.ts","sourceRoot":"","sources":["../../src/hooks/tool-guard.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"research-gate.test.d.ts","sourceRoot":"","sources":["../../src/lib/research-gate.test.ts"],"names":[],"mappings":""}
|