@dv.nghiem/flowdeck 0.1.2 → 0.2.1
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 +1 -1
- package/dist/agents/auto-learner.d.ts +3 -0
- package/dist/agents/auto-learner.d.ts.map +1 -0
- package/dist/agents/index.d.ts +12 -9
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/orchestrator.d.ts.map +1 -1
- package/dist/agents/planner.d.ts +1 -0
- package/dist/agents/planner.d.ts.map +1 -1
- package/dist/agents/types.d.ts +1 -1
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/loader.d.ts +7 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/schema.d.ts +21 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/hooks/auto-learn-hook.d.ts +20 -0
- package/dist/hooks/auto-learn-hook.d.ts.map +1 -0
- package/dist/hooks/guard-rails.d.ts.map +1 -1
- package/dist/hooks/orchestrator-guard-hook.d.ts +29 -0
- package/dist/hooks/orchestrator-guard-hook.d.ts.map +1 -0
- package/dist/hooks/session-events.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3285 -119
- package/dist/lib/logger.d.ts +20 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/tools/create-skill.d.ts +3 -0
- package/dist/tools/create-skill.d.ts.map +1 -0
- package/dist/tools/reflect.d.ts +3 -0
- package/dist/tools/reflect.d.ts.map +1 -0
- package/docs/agents.md +14 -62
- package/docs/commands.md +1 -1
- package/docs/configuration.md +80 -1
- package/docs/quick-start.md +1 -1
- package/docs/skills.md +1 -1
- package/docs/workflows.md +14 -14
- package/package.json +2 -2
- package/src/commands/fd-learn.md +36 -0
- package/src/commands/fd-reflect.md +30 -0
- package/src/rules/common/agent-orchestration.md +2 -4
- package/src/workflows/execute-phase.md +17 -14
- package/src/workflows/plan-flow.md +2 -2
- package/src/workflows/plan-phase.md +12 -12
- package/dist/agents/flowdeck.d.ts +0 -5
- package/dist/agents/flowdeck.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -54,7 +54,7 @@ FlowDeck structures every feature through a four-step cycle:
|
|
|
54
54
|
|------|---------|--------------|
|
|
55
55
|
| **Initialize** | `/fd-new-project MyApp` | Creates `.planning/` directory with `PROJECT.md`, `STATE.md`, and `ROADMAP.md` |
|
|
56
56
|
| **Discuss** | `/fd-discuss 1` | `@discusser` runs structured Q&A, saves decisions to `DISCUSS.md` |
|
|
57
|
-
| **Plan** | `/fd-plan 1` | `@
|
|
57
|
+
| **Plan** | `/fd-plan 1` | `@planner` builds a wave-structured `PLAN.md`; you type `CONFIRMED` to proceed |
|
|
58
58
|
| **Execute** | `/fd-new-feature "…"` | `@orchestrator` delegates to `@architect`, `@coder`, `@tester`, `@reviewer` in waves |
|
|
59
59
|
|
|
60
60
|
State is written to `.planning/STATE.md` after each phase. Use `/fd-checkpoint` to save mid-session and `/fd-resume` to reload context in a new session.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-learner.d.ts","sourceRoot":"","sources":["../../src/agents/auto-learner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAuB/C,wBAAgB,sBAAsB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,eAAe,CAWtE"}
|
package/dist/agents/index.d.ts
CHANGED
|
@@ -3,9 +3,8 @@ import type { AgentDefinition } from './types';
|
|
|
3
3
|
export { resolvePrompt } from './types';
|
|
4
4
|
export type { AgentDefinition, AgentFactory } from './types';
|
|
5
5
|
import { createOrchestratorAgent } from './orchestrator';
|
|
6
|
-
import { createPlannerAgent } from './planner';
|
|
6
|
+
import { createPlannerAgent, createPlanCheckerAgent } from './planner';
|
|
7
7
|
import { createCoderAgent } from './coder';
|
|
8
|
-
import { createFlowdeckPlannerAgent, createFlowdeckExecutorAgent, createFlowdeckPlanCheckerAgent } from './flowdeck';
|
|
9
8
|
import { createTesterAgent } from './tester';
|
|
10
9
|
import { createReviewerAgent } from './reviewer';
|
|
11
10
|
import { createResearcherAgent } from './researcher';
|
|
@@ -20,19 +19,23 @@ import { createArchitectAgent } from './architect';
|
|
|
20
19
|
import { createRiskAnalystAgent } from './risk-analyst';
|
|
21
20
|
import { createPolicyEnforcerAgent } from './policy-enforcer';
|
|
22
21
|
import { createPerformanceOptimizerAgent, createRefactorGuideAgent } from './performance';
|
|
23
|
-
|
|
22
|
+
/** All agent names registered by FlowDeck. */
|
|
23
|
+
export declare const AGENT_NAMES: readonly string[];
|
|
24
24
|
export type AgentMode = 'primary' | 'subagent' | 'all';
|
|
25
25
|
/**
|
|
26
|
-
* Create a single agent by name with optional custom prompts
|
|
26
|
+
* Create a single agent by name with optional model and custom prompts.
|
|
27
|
+
* When model is undefined, the agent inherits the model currently selected by the user.
|
|
27
28
|
*/
|
|
28
29
|
export declare function createAgent(name: string, model?: string, customPrompt?: string, customAppendPrompt?: string): AgentDefinition | undefined;
|
|
29
30
|
/**
|
|
30
|
-
* Create all agent definitions
|
|
31
|
+
* Create all agent definitions with optional per-agent model overrides.
|
|
32
|
+
* When a model is not provided for an agent, it will inherit the user's currently selected model.
|
|
31
33
|
*/
|
|
32
|
-
export declare function createAgents(): AgentDefinition[];
|
|
34
|
+
export declare function createAgents(agentModels?: Record<string, string | undefined>): AgentDefinition[];
|
|
33
35
|
/**
|
|
34
|
-
* Get agent configurations formatted for the OpenCode SDK
|
|
36
|
+
* Get agent configurations formatted for the OpenCode SDK.
|
|
37
|
+
* Pass agentModels to apply per-agent model overrides from flowdeck.json.
|
|
35
38
|
*/
|
|
36
|
-
export declare function getAgentConfigs(): Record<string, AgentConfig>;
|
|
37
|
-
export { createOrchestratorAgent, createPlannerAgent, createCoderAgent,
|
|
39
|
+
export declare function getAgentConfigs(agentModels?: Record<string, string | undefined>): Record<string, AgentConfig>;
|
|
40
|
+
export { createOrchestratorAgent, createPlannerAgent, createCoderAgent, createPlanCheckerAgent, createTesterAgent, createReviewerAgent, createResearcherAgent, createWriterAgent, createSecurityAuditorAgent, createDocUpdaterAgent, createMapperAgent, createCodeExplorerAgent, createDebugSpecialistAgent, createBuildErrorResolverAgent, createTaskSplitterAgent, createDiscusserAgent, createParallelCoordinatorAgent, createArchitectAgent, createRiskAnalystAgent, createPolicyEnforcerAgent, createPerformanceOptimizerAgent, createRefactorGuideAgent, };
|
|
38
41
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAC;AACpF,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,8BAA8B,EAC/B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EACL,+BAA+B,EAC/B,wBAAwB,EACzB,MAAM,eAAe,CAAC;AAGvB,8CAA8C;AAC9C,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAwB/B,CAAC;AAGX,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC;AAmBvD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,EACrB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,eAAe,GAAG,SAAS,CAgH7B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,eAAe,EAAE,CAYhG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAuB7G;AAGD,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,EAC7B,uBAAuB,EACvB,oBAAoB,EACpB,8BAA8B,EAC9B,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,EACzB,+BAA+B,EAC/B,wBAAwB,GACzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/agents/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/agents/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAmP/C;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAsB5E;AAED,wBAAgB,uBAAuB,CACrC,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACjE,YAAY,CAAC,EAAE,MAAM,EACrB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC3B,eAAe,CAuBjB"}
|
package/dist/agents/planner.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../src/agents/planner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../src/agents/planner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,SAAS,CAAC;AA+N7D,eAAO,MAAM,kBAAkB,EAAE,YAiBhC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,YAqBpC,CAAC"}
|
package/dist/agents/types.d.ts
CHANGED
|
@@ -16,5 +16,5 @@ export interface AgentDefinition {
|
|
|
16
16
|
* Otherwise, customAppendPrompt is appended to the base.
|
|
17
17
|
*/
|
|
18
18
|
export declare function resolvePrompt(base: string, customPrompt?: string, customAppendPrompt?: string): string;
|
|
19
|
-
export type AgentFactory = (model: string, customPrompt?: string, customAppendPrompt?: string) => AgentDefinition;
|
|
19
|
+
export type AgentFactory = (model: string | undefined, customPrompt?: string, customAppendPrompt?: string) => AgentDefinition;
|
|
20
20
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,sEAAsE;IACtE,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,EACrB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,MAAM,CAIR;AAED,MAAM,MAAM,YAAY,GAAG,CACzB,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,sEAAsE;IACtE,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,EACrB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,MAAM,CAIR;AAED,MAAM,MAAM,YAAY,GAAG,CACzB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,YAAY,CAAC,EAAE,MAAM,EACrB,kBAAkB,CAAC,EAAE,MAAM,KACxB,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { FlowDeckConfig } from './schema';
|
|
2
|
+
/**
|
|
3
|
+
* Load flowdeck.json config. Project-level config takes precedence over global.
|
|
4
|
+
* Returns an empty config if no file is found.
|
|
5
|
+
*/
|
|
6
|
+
export declare function loadFlowDeckConfig(directory?: string): FlowDeckConfig;
|
|
7
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAa/C;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,CAoBrE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FlowDeck configuration schema for `flowdeck.json`.
|
|
3
|
+
*
|
|
4
|
+
* Users can create this file at:
|
|
5
|
+
* - Global: ~/.config/opencode/flowdeck.json
|
|
6
|
+
* - Project: <project>/.opencode/flowdeck.json
|
|
7
|
+
*
|
|
8
|
+
* Project config takes precedence over global config.
|
|
9
|
+
*/
|
|
10
|
+
export interface AgentModelConfig {
|
|
11
|
+
/** Model to use for this agent (e.g. "anthropic/claude-sonnet-4-5"). If not set, uses the currently selected model. */
|
|
12
|
+
model?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface FlowDeckConfig {
|
|
15
|
+
/**
|
|
16
|
+
* Per-agent model overrides. Keys are agent names (e.g. "orchestrator", "coder", "planner").
|
|
17
|
+
* If an agent is not listed, it uses the model the user currently has selected in OpenCode.
|
|
18
|
+
*/
|
|
19
|
+
agents?: Record<string, AgentModelConfig>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,uHAAuH;IACvH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC3C"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-Learn Hook
|
|
3
|
+
*
|
|
4
|
+
* Fires automatically on session.idle after significant work has been done.
|
|
5
|
+
* Spawns a background child session with the @auto-learner agent, which:
|
|
6
|
+
* 1. Calls the `reflect` tool to analyse session artifacts
|
|
7
|
+
* 2. Calls `create-skill` for any valuable patterns found
|
|
8
|
+
*
|
|
9
|
+
* No user command required — fully automatic.
|
|
10
|
+
*
|
|
11
|
+
* Safeguards:
|
|
12
|
+
* - Only triggers once per plugin session (triggered flag)
|
|
13
|
+
* - Requires at least MIN_EDITS file edits to consider work "significant"
|
|
14
|
+
* - Fire-and-forget: does not block the user's session
|
|
15
|
+
* - All errors are swallowed — never surfaces to the user
|
|
16
|
+
*/
|
|
17
|
+
import type { OpencodeClient } from "@opencode-ai/sdk";
|
|
18
|
+
import type { SessionFileTracker } from "./file-tracker";
|
|
19
|
+
export declare function createAutoLearnHook(client: OpencodeClient, fileTracker: SessionFileTracker, directory: string, appLog: (msg: string) => void): () => Promise<void>;
|
|
20
|
+
//# sourceMappingURL=auto-learn-hook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-learn-hook.d.ts","sourceRoot":"","sources":["../../src/hooks/auto-learn-hook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAIxD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,kBAAkB,EAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,uBAkB9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard-rails.d.ts","sourceRoot":"","sources":["../../src/hooks/guard-rails.ts"],"names":[],"mappings":"AASA;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAA;AAE9D;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GAAG,IAAI,EAAG,wBAAwB;AACpD,UAAU,CAAC,EAAE,MAAM,GAClB,aAAa,CAkBf;AAgBD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;AAE9C;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAC1B,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EACvB,OAAO,EAAE,GAAG,GACX,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"guard-rails.d.ts","sourceRoot":"","sources":["../../src/hooks/guard-rails.ts"],"names":[],"mappings":"AASA;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAA;AAE9D;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GAAG,IAAI,EAAG,wBAAwB;AACpD,UAAU,CAAC,EAAE,MAAM,GAClB,aAAa,CAkBf;AAgBD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;AAE9C;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAC1B,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EACvB,OAAO,EAAE,GAAG,GACX,OAAO,CAAC,IAAI,CAAC,CAgEf;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ,CAWjF;AAMD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAS3D"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Orchestrator Guard Hook
|
|
3
|
+
*
|
|
4
|
+
* Enforces the "orchestrator as coordinator only" rule:
|
|
5
|
+
* the primary orchestrator session is not allowed to use file-writing or shell-execution
|
|
6
|
+
* tools directly. It must delegate all such work via the `delegate` tool.
|
|
7
|
+
*
|
|
8
|
+
* Detection: the FIRST session.created event is treated as the orchestrator's session.
|
|
9
|
+
* Child sessions (created by `delegate`) always arrive after the primary one.
|
|
10
|
+
*
|
|
11
|
+
* To disable: set FLOWDECK_ORCHESTRATOR_GUARD=off in the environment.
|
|
12
|
+
*/
|
|
13
|
+
export declare class OrchestratorGuard {
|
|
14
|
+
private primarySessionId;
|
|
15
|
+
/**
|
|
16
|
+
* Call this from the plugin's event handler so the guard can capture the
|
|
17
|
+
* primary session ID the first time a session is created.
|
|
18
|
+
*/
|
|
19
|
+
onEvent(event: {
|
|
20
|
+
type: string;
|
|
21
|
+
properties?: unknown;
|
|
22
|
+
}): void;
|
|
23
|
+
/**
|
|
24
|
+
* Call this from tool.execute.before.
|
|
25
|
+
* Throws if the tool is blocked for the orchestrator session.
|
|
26
|
+
*/
|
|
27
|
+
check(sessionId: string, toolName: string): void;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=orchestrator-guard-hook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator-guard-hook.d.ts","sourceRoot":"","sources":["../../src/hooks/orchestrator-guard-hook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAuEH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,gBAAgB,CAAsB;IAE9C;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAa5D;;;OAGG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;CASjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-events.d.ts","sourceRoot":"","sources":["../../src/hooks/session-events.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAC1B,SAAS,EAAE,MAAM,GAAG,OAAO,GAC1B,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"session-events.d.ts","sourceRoot":"","sources":["../../src/hooks/session-events.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAC1B,SAAS,EAAE,MAAM,GAAG,OAAO,GAC1B,OAAO,CAAC,IAAI,CAAC,CAuBf"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,qBAAqB,CAAA;AA2K/D,QAAA,MAAM,MAAM,EAAE,YAGb,CAAA;AAED,eAAe,MAAM,CAAA"}
|