@entelligentsia/forgecli 0.10.1 → 0.11.2
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/CHANGELOG.md +78 -0
- package/README.md +21 -3
- package/dist/CHANGELOG-forge-plugin.md +22 -0
- package/dist/extensions/forgecli/add-pipeline.d.ts +19 -0
- package/dist/extensions/forgecli/add-pipeline.js +143 -0
- package/dist/extensions/forgecli/add-pipeline.js.map +1 -0
- package/dist/extensions/forgecli/add-task.d.ts +20 -0
- package/dist/extensions/forgecli/add-task.js +154 -0
- package/dist/extensions/forgecli/add-task.js.map +1 -0
- package/dist/extensions/forgecli/calibrate.d.ts +61 -0
- package/dist/extensions/forgecli/calibrate.js +488 -0
- package/dist/extensions/forgecli/calibrate.js.map +1 -0
- package/dist/extensions/forgecli/fix-bug.d.ts +9 -1
- package/dist/extensions/forgecli/fix-bug.js +70 -8
- package/dist/extensions/forgecli/fix-bug.js.map +1 -1
- package/dist/extensions/forgecli/forge-commands.js +15 -22
- package/dist/extensions/forgecli/forge-commands.js.map +1 -1
- package/dist/extensions/forgecli/forge-subagent.js +34 -7
- package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
- package/dist/extensions/forgecli/forge-update-command.d.ts +9 -0
- package/dist/extensions/forgecli/forge-update-command.js +106 -7
- package/dist/extensions/forgecli/forge-update-command.js.map +1 -1
- package/dist/extensions/forgecli/health-check.d.ts +22 -1
- package/dist/extensions/forgecli/health-check.js +177 -4
- package/dist/extensions/forgecli/health-check.js.map +1 -1
- package/dist/extensions/forgecli/hook-dispatcher.d.ts +25 -1
- package/dist/extensions/forgecli/hook-dispatcher.js +104 -9
- package/dist/extensions/forgecli/hook-dispatcher.js.map +1 -1
- package/dist/extensions/forgecli/hooks/check-update.d.ts +81 -0
- package/dist/extensions/forgecli/hooks/check-update.js +308 -0
- package/dist/extensions/forgecli/hooks/check-update.js.map +1 -0
- package/dist/extensions/forgecli/hooks/forge-permissions.d.ts +32 -0
- package/dist/extensions/forgecli/hooks/forge-permissions.js +119 -0
- package/dist/extensions/forgecli/hooks/forge-permissions.js.map +1 -0
- package/dist/extensions/forgecli/hooks/triage-error.d.ts +23 -0
- package/dist/extensions/forgecli/hooks/triage-error.js +62 -0
- package/dist/extensions/forgecli/hooks/triage-error.js.map +1 -0
- package/dist/extensions/forgecli/hooks/write-guard.d.ts +28 -0
- package/dist/extensions/forgecli/hooks/write-guard.js +225 -0
- package/dist/extensions/forgecli/hooks/write-guard.js.map +1 -0
- package/dist/extensions/forgecli/index.js +60 -0
- package/dist/extensions/forgecli/index.js.map +1 -1
- package/dist/extensions/forgecli/init-context.d.ts +1 -1
- package/dist/extensions/forgecli/init-context.js +21 -6
- package/dist/extensions/forgecli/init-context.js.map +1 -1
- package/dist/extensions/forgecli/materialize.d.ts +16 -0
- package/dist/extensions/forgecli/materialize.js +195 -0
- package/dist/extensions/forgecli/materialize.js.map +1 -0
- package/dist/extensions/forgecli/migrate.d.ts +19 -0
- package/dist/extensions/forgecli/migrate.js +258 -0
- package/dist/extensions/forgecli/migrate.js.map +1 -0
- package/dist/extensions/forgecli/migration-engine.d.ts +111 -0
- package/dist/extensions/forgecli/migration-engine.js +533 -0
- package/dist/extensions/forgecli/migration-engine.js.map +1 -0
- package/dist/extensions/forgecli/quiz-agent.d.ts +17 -0
- package/dist/extensions/forgecli/quiz-agent.js +98 -0
- package/dist/extensions/forgecli/quiz-agent.js.map +1 -0
- package/dist/extensions/forgecli/remove-command.d.ts +17 -0
- package/dist/extensions/forgecli/remove-command.js +124 -0
- package/dist/extensions/forgecli/remove-command.js.map +1 -0
- package/dist/extensions/forgecli/report-bug.d.ts +25 -0
- package/dist/extensions/forgecli/report-bug.js +159 -0
- package/dist/extensions/forgecli/report-bug.js.map +1 -0
- package/dist/extensions/forgecli/retrospective.d.ts +19 -0
- package/dist/extensions/forgecli/retrospective.js +156 -0
- package/dist/extensions/forgecli/retrospective.js.map +1 -0
- package/dist/extensions/forgecli/run-sprint.js +34 -0
- package/dist/extensions/forgecli/run-sprint.js.map +1 -1
- package/dist/extensions/forgecli/run-task.d.ts +9 -1
- package/dist/extensions/forgecli/run-task.js +64 -10
- package/dist/extensions/forgecli/run-task.js.map +1 -1
- package/dist/extensions/forgecli/session-registry.d.ts +27 -2
- package/dist/extensions/forgecli/session-registry.js +52 -1
- package/dist/extensions/forgecli/session-registry.js.map +1 -1
- package/dist/extensions/forgecli/status-command.d.ts +19 -0
- package/dist/extensions/forgecli/status-command.js +140 -0
- package/dist/extensions/forgecli/status-command.js.map +1 -0
- package/dist/extensions/forgecli/store-query.d.ts +22 -0
- package/dist/extensions/forgecli/store-query.js +107 -0
- package/dist/extensions/forgecli/store-query.js.map +1 -0
- package/dist/extensions/forgecli/store-repair.d.ts +17 -0
- package/dist/extensions/forgecli/store-repair.js +123 -0
- package/dist/extensions/forgecli/store-repair.js.map +1 -0
- package/dist/extensions/forgecli/thread-switcher.js +213 -28
- package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
- package/dist/extensions/forgecli/update-tools.d.ts +23 -0
- package/dist/extensions/forgecli/update-tools.js +136 -0
- package/dist/extensions/forgecli/update-tools.js.map +1 -0
- package/dist/extensions/forgecli/viewport-theme.js +4 -0
- package/dist/extensions/forgecli/viewport-theme.js.map +1 -1
- package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
- package/dist/forge-payload/.schemas/config.schema.json +83 -0
- package/dist/forge-payload/.schemas/migrations.json +2049 -0
- package/dist/forge-payload/commands/regenerate.md +17 -1
- package/dist/forge-payload/meta/personas/README.md +16 -0
- package/dist/forge-payload/meta/personas/meta-architect.md +70 -0
- package/dist/forge-payload/meta/personas/meta-bug-fixer.md +73 -0
- package/dist/forge-payload/meta/personas/meta-collator.md +72 -0
- package/dist/forge-payload/meta/personas/meta-engineer.md +70 -0
- package/dist/forge-payload/meta/personas/meta-orchestrator.md +71 -0
- package/dist/forge-payload/meta/personas/meta-product-manager.md +82 -0
- package/dist/forge-payload/meta/personas/meta-qa-engineer.md +91 -0
- package/dist/forge-payload/meta/personas/meta-supervisor.md +92 -0
- package/dist/forge-payload/meta/skill-recommendations.md +154 -0
- package/dist/forge-payload/meta/skills/meta-architect-skills.md +43 -0
- package/dist/forge-payload/meta/skills/meta-bug-fixer-skills.md +43 -0
- package/dist/forge-payload/meta/skills/meta-collator-skills.md +41 -0
- package/dist/forge-payload/meta/skills/meta-engineer-skills.md +43 -0
- package/dist/forge-payload/meta/skills/meta-generic-skills.md +58 -0
- package/dist/forge-payload/meta/skills/meta-qa-engineer-skills.md +46 -0
- package/dist/forge-payload/meta/skills/meta-supervisor-skills.md +43 -0
- package/dist/forge-payload/meta/store-schema/bug.schema.md +71 -0
- package/dist/forge-payload/meta/store-schema/event.schema.md +76 -0
- package/dist/forge-payload/meta/store-schema/feature.schema.md +65 -0
- package/dist/forge-payload/meta/store-schema/sprint.schema.md +64 -0
- package/dist/forge-payload/meta/store-schema/task.schema.md +78 -0
- package/dist/forge-payload/meta/templates/meta-code-review.md +26 -0
- package/dist/forge-payload/meta/templates/meta-plan-review.md +28 -0
- package/dist/forge-payload/meta/templates/meta-plan.md +28 -0
- package/dist/forge-payload/meta/templates/meta-progress.md +25 -0
- package/dist/forge-payload/meta/templates/meta-retrospective.md +28 -0
- package/dist/forge-payload/meta/templates/meta-sprint-manifest.md +26 -0
- package/dist/forge-payload/meta/templates/meta-sprint-requirements.md +91 -0
- package/dist/forge-payload/meta/templates/meta-task-prompt.md +26 -0
- package/dist/forge-payload/meta/tool-specs/collate.spec.md +88 -0
- package/dist/forge-payload/meta/tool-specs/generation-manifest.spec.md +139 -0
- package/dist/forge-payload/meta/tool-specs/manage-config.spec.md +143 -0
- package/dist/forge-payload/meta/tool-specs/seed-store.spec.md +91 -0
- package/dist/forge-payload/meta/tool-specs/store-cli.spec.md +328 -0
- package/dist/forge-payload/meta/tool-specs/validate-store.spec.md +191 -0
- package/dist/forge-payload/meta/workflows/_fragments/context-injection.md +75 -0
- package/dist/forge-payload/meta/workflows/_fragments/event-emission-schema.md +73 -0
- package/dist/forge-payload/meta/workflows/_fragments/finalize.md +13 -0
- package/dist/forge-payload/meta/workflows/_fragments/friction-emit.md +73 -0
- package/dist/forge-payload/meta/workflows/_fragments/progress-reporting.md +38 -0
- package/dist/forge-payload/meta/workflows/_fragments/store-cli-verbs.md +39 -0
- package/dist/forge-payload/meta/workflows/meta-approve.md +119 -0
- package/dist/forge-payload/meta/workflows/meta-collate.md +89 -0
- package/dist/forge-payload/meta/workflows/meta-commit.md +93 -0
- package/dist/forge-payload/meta/workflows/meta-enhance.md +286 -0
- package/dist/forge-payload/meta/workflows/meta-fix-bug.md +501 -0
- package/dist/forge-payload/meta/workflows/meta-implement.md +132 -0
- package/dist/forge-payload/meta/workflows/meta-migrate.md +455 -0
- package/dist/forge-payload/meta/workflows/meta-orchestrate.md +993 -0
- package/dist/forge-payload/meta/workflows/meta-plan-task.md +133 -0
- package/dist/forge-payload/meta/workflows/meta-quiz-agent.md +135 -0
- package/dist/forge-payload/meta/workflows/meta-retrospective.md +65 -0
- package/dist/forge-payload/meta/workflows/meta-review-implementation.md +119 -0
- package/dist/forge-payload/meta/workflows/meta-review-plan.md +108 -0
- package/dist/forge-payload/meta/workflows/meta-review-sprint-completion.md +65 -0
- package/dist/forge-payload/meta/workflows/meta-sprint-intake.md +76 -0
- package/dist/forge-payload/meta/workflows/meta-sprint-plan.md +147 -0
- package/dist/forge-payload/meta/workflows/meta-update-implementation.md +76 -0
- package/dist/forge-payload/meta/workflows/meta-update-plan.md +76 -0
- package/dist/forge-payload/meta/workflows/meta-validate.md +111 -0
- package/dist/forge-payload/tools/check-structure.cjs +344 -0
- package/dist/forge-payload/tools/list-skills.js +76 -0
- package/dist/forge-payload/tools/store-cli.cjs +27 -1
- package/dist/forge-payload/tools/substitute-placeholders.cjs +60 -8
- package/dist/forge-payload/tools/verify-integrity.cjs +86 -0
- package/package.json +2 -2
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// Forge permission pattern registry — FORGE-S23-T04.
|
|
2
|
+
//
|
|
3
|
+
// Port of forge/forge/hooks/forge-permissions.js pattern-match auto-allow logic.
|
|
4
|
+
// Pi has no PermissionRequest event, so "auto-allow" means: when the tool_call
|
|
5
|
+
// matches a known Forge pattern, silently return undefined (no block) from the
|
|
6
|
+
// tool_call handler, bypassing the two-layer-guard boundary check.
|
|
7
|
+
//
|
|
8
|
+
// Key differences from the plugin:
|
|
9
|
+
// - No updatedPermissions / localSettings.json persistence: pi has no
|
|
10
|
+
// PermissionRequest event or persistent allow-rule protocol. The rule
|
|
11
|
+
// string is kept for audit-log display only.
|
|
12
|
+
// - WEBFETCH_PATTERNS omitted: pi's @earendil-works/pi-coding-agent has no
|
|
13
|
+
// WebFetchToolCallEvent type in its exported union. Adding dead code that
|
|
14
|
+
// could never fire would be misleading.
|
|
15
|
+
// - MultiEdit patterns omitted: pi has no MultiEdit event.
|
|
16
|
+
// - node -e / node -p remain excluded: arbitrary code execution must not
|
|
17
|
+
// be auto-approved. (Security decision from the original plugin, preserved.)
|
|
18
|
+
//
|
|
19
|
+
// File placement rationale: task prompt suggested "into two-layer-guard.ts",
|
|
20
|
+
// but that file has a tight single-responsibility scope. The T02 (write-guard.ts)
|
|
21
|
+
// and T03 (triage-error.ts) siblings establish the pattern: one concern per file.
|
|
22
|
+
// This file follows that convention per forge-cli-engineer Iron Law 8 (prefer
|
|
23
|
+
// architectural symmetry over literal prompt when prior art exists in the codebase).
|
|
24
|
+
// ── Pattern registries — ported verbatim from forge-permissions.js ──────────
|
|
25
|
+
/** Bash command patterns that are auto-allowed. */
|
|
26
|
+
export const BASH_PATTERNS = [
|
|
27
|
+
// Node tool invocations — covers $FORGE_ROOT/tools/*.cjs and $CLAUDE_PLUGIN_ROOT
|
|
28
|
+
{ pattern: /^node\s+.*\/tools\/[\w-]+\.(cjs|js)\b/, rule: "node ~/.claude/plugins/cache/forge/forge/*/tools/*" },
|
|
29
|
+
// NOTE: node -e and node -p are intentionally excluded — arbitrary code
|
|
30
|
+
// execution must not be auto-approved. Forge workflows use node .../tools/*.cjs
|
|
31
|
+
// for tool invocations; inline node -e/p requires explicit user approval.
|
|
32
|
+
// Shell commands used by Forge workflows
|
|
33
|
+
{ pattern: /^mkdir\s+-p\s+/, rule: "mkdir -p .forge/*" },
|
|
34
|
+
{ pattern: /^mkdir\s+-p\s+\S+/, rule: "mkdir -p .forge/*" },
|
|
35
|
+
{ pattern: /^cp\s+/, rule: "cp */schemas/*.schema.json .forge/schemas/" },
|
|
36
|
+
{ pattern: /^ls\s+/, rule: "ls *" },
|
|
37
|
+
{ pattern: /^cat\s+/, rule: "cat .forge/*" },
|
|
38
|
+
{ pattern: /^date\s+-u\s+/, rule: "date -u *" },
|
|
39
|
+
{ pattern: /^date\s+/, rule: "date -u *" },
|
|
40
|
+
{ pattern: /^jq\s+/, rule: "jq *" },
|
|
41
|
+
{ pattern: /^touch\s+/, rule: "touch .forge/*" },
|
|
42
|
+
{ pattern: /^uname\s+/, rule: "uname *" },
|
|
43
|
+
{ pattern: /^rm\s+\.forge/, rule: "rm .forge/*" },
|
|
44
|
+
{ pattern: /^rm\s+-rf\s+\.forge/, rule: "rm -rf .forge/*" },
|
|
45
|
+
{ pattern: /^rmdir\s+/, rule: "rmdir .forge/*" },
|
|
46
|
+
{ pattern: /^gh\s+auth\s+/, rule: "gh auth status *" },
|
|
47
|
+
{ pattern: /^gh\s+issue\s+/, rule: "gh issue create *" },
|
|
48
|
+
// git read-only commands (already auto-approved by Claude Code, but belt-and-suspenders)
|
|
49
|
+
{ pattern: /^git\s+status\b/, rule: "git status *" },
|
|
50
|
+
{ pattern: /^git\s+log\b/, rule: "git log *" },
|
|
51
|
+
{ pattern: /^git\s+diff\b/, rule: "git diff *" },
|
|
52
|
+
{ pattern: /^git\s+add\s+/, rule: "git add *" },
|
|
53
|
+
{ pattern: /^git\s+commit\s+-m\s+/, rule: "git commit -m *" },
|
|
54
|
+
{ pattern: /^git\s+push\b/, rule: "git push *" },
|
|
55
|
+
{ pattern: /^git\s+checkout\s+/, rule: "git checkout *" },
|
|
56
|
+
{ pattern: /^git\s+branch\s+/, rule: "git branch *" },
|
|
57
|
+
{ pattern: /^git\s+stash\b/, rule: "git stash *" },
|
|
58
|
+
{ pattern: /^git\s+worktree\s+/, rule: "git worktree *" },
|
|
59
|
+
];
|
|
60
|
+
/** Write tool path patterns that are auto-allowed. */
|
|
61
|
+
export const WRITE_PATTERNS = [
|
|
62
|
+
{ pattern: /^\.forge\//, rule: ".forge/**" },
|
|
63
|
+
{ pattern: /^\.claude\/commands\//, rule: ".claude/commands/**" },
|
|
64
|
+
{ pattern: /^engineering\//, rule: "engineering/**" },
|
|
65
|
+
{ pattern: /^CLAUDE\.md$/i, rule: "CLAUDE.md" },
|
|
66
|
+
{ pattern: /^AGENTS\.md$/i, rule: "AGENTS.md" },
|
|
67
|
+
{ pattern: /^\.gitignore$/, rule: ".gitignore" },
|
|
68
|
+
];
|
|
69
|
+
/** Edit tool path patterns that are auto-allowed. */
|
|
70
|
+
export const EDIT_PATTERNS = [
|
|
71
|
+
{ pattern: /^\.forge\//, rule: ".forge/**" },
|
|
72
|
+
{ pattern: /^\.claude\/commands\//, rule: ".claude/commands/**" },
|
|
73
|
+
{ pattern: /^engineering\//, rule: "engineering/**" },
|
|
74
|
+
{ pattern: /^CLAUDE\.md$/i, rule: "CLAUDE.md" },
|
|
75
|
+
{ pattern: /^AGENTS\.md$/i, rule: "AGENTS.md" },
|
|
76
|
+
];
|
|
77
|
+
// Map from pi tool name to its pattern list.
|
|
78
|
+
// NOTE: "multiedit" is omitted — pi has no MultiEdit event in its tool_call union.
|
|
79
|
+
// NOTE: "webfetch" is omitted — pi has no WebFetchToolCallEvent type.
|
|
80
|
+
const PATTERN_MAP = {
|
|
81
|
+
bash: BASH_PATTERNS,
|
|
82
|
+
write: WRITE_PATTERNS,
|
|
83
|
+
edit: EDIT_PATTERNS,
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Check whether a pi tool_call matches a known Forge auto-allow pattern.
|
|
87
|
+
*
|
|
88
|
+
* @param toolName The pi tool name ("bash", "write", "edit", etc.)
|
|
89
|
+
* @param toolInput The tool's input object (toolCallEvent.input)
|
|
90
|
+
* @returns The matched rule string for audit logging, or null if no match.
|
|
91
|
+
* A non-null return is the "silently allow" signal — the caller
|
|
92
|
+
* should return undefined from the tool_call handler (no block).
|
|
93
|
+
*
|
|
94
|
+
* Input fields tested per tool type (mirrors plugin matchTool):
|
|
95
|
+
* bash → toolInput.command (string)
|
|
96
|
+
* write → toolInput.path (string; pi uses `path`, not `file_path`)
|
|
97
|
+
* edit → toolInput.path (string)
|
|
98
|
+
*/
|
|
99
|
+
export function matchForgePermission(toolName, toolInput) {
|
|
100
|
+
const patterns = PATTERN_MAP[toolName];
|
|
101
|
+
if (!patterns)
|
|
102
|
+
return null;
|
|
103
|
+
let input;
|
|
104
|
+
if (toolName === "bash") {
|
|
105
|
+
input = typeof toolInput.command === "string" ? toolInput.command : "";
|
|
106
|
+
}
|
|
107
|
+
else if (toolName === "write" || toolName === "edit") {
|
|
108
|
+
input = typeof toolInput.path === "string" ? toolInput.path : "";
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
for (const { pattern, rule } of patterns) {
|
|
114
|
+
if (pattern.test(input))
|
|
115
|
+
return rule;
|
|
116
|
+
}
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=forge-permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forge-permissions.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/hooks/forge-permissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Regex patterns that identify Forge-related Bash commands.
|
|
3
|
+
* Ported verbatim from forge/forge/hooks/triage-error.js lines 10–20.
|
|
4
|
+
* Exported as `readonly` so tests can verify count and identity.
|
|
5
|
+
*/
|
|
6
|
+
export declare const FORGE_PATTERNS: readonly RegExp[];
|
|
7
|
+
/**
|
|
8
|
+
* Returns true if the command matches any Forge-related pattern.
|
|
9
|
+
* Mirrors `isForgeRelated()` from triage-error.js.
|
|
10
|
+
*/
|
|
11
|
+
export declare function isForgeRelated(command: string): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Build the ctx.ui.notify message for a failed Forge-related command.
|
|
14
|
+
*
|
|
15
|
+
* Format (condensed for notification surface):
|
|
16
|
+
* FORGE_ERROR_TRIAGE: A Forge command just failed. [First error line: "...". ]
|
|
17
|
+
* Would you like to file a bug? Run /forge:report-bug
|
|
18
|
+
*
|
|
19
|
+
* @param command The original bash command string (unused in message body; kept for future use).
|
|
20
|
+
* @param outputSnippet First few lines of tool output, already joined to a single string.
|
|
21
|
+
* Empty string if no output is available.
|
|
22
|
+
*/
|
|
23
|
+
export declare function buildTriageMessage(_command: string, outputSnippet: string): string;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// hooks/triage-error.ts — Post-Bash-failure Forge error triage (FORGE-S23-T03).
|
|
2
|
+
//
|
|
3
|
+
// Port of forge/forge/hooks/triage-error.js (71 lines) for the pi extension context.
|
|
4
|
+
//
|
|
5
|
+
// When a Bash tool call exits non-zero and the command matches a Forge-related
|
|
6
|
+
// pattern, the hook-dispatcher calls isForgeRelated() and, on a match, uses
|
|
7
|
+
// buildTriageMessage() to build a ctx.ui.notify message suggesting the user
|
|
8
|
+
// run /forge:report-bug.
|
|
9
|
+
//
|
|
10
|
+
// This module is a pure helper — no pi imports, no side effects. All logic is
|
|
11
|
+
// exported so tests can exercise it in isolation.
|
|
12
|
+
//
|
|
13
|
+
// Plugin parity reference: forge/forge/hooks/triage-error.js (read-only — do NOT edit).
|
|
14
|
+
//
|
|
15
|
+
// Iron Laws:
|
|
16
|
+
// IL1 — code only under forge-cli/src/extensions/forgecli/.
|
|
17
|
+
// IL6 — no shell-string interpolation; no spawn calls.
|
|
18
|
+
// ── Pattern set (ported verbatim from triage-error.js:10-20) ─────────────────
|
|
19
|
+
/**
|
|
20
|
+
* Regex patterns that identify Forge-related Bash commands.
|
|
21
|
+
* Ported verbatim from forge/forge/hooks/triage-error.js lines 10–20.
|
|
22
|
+
* Exported as `readonly` so tests can verify count and identity.
|
|
23
|
+
*/
|
|
24
|
+
export const FORGE_PATTERNS = [
|
|
25
|
+
/manage-config/,
|
|
26
|
+
/\.forge\//,
|
|
27
|
+
/CLAUDE_PLUGIN_ROOT/,
|
|
28
|
+
/FORGE_ROOT/,
|
|
29
|
+
/MANAGE_CONFIG/,
|
|
30
|
+
/engineering\/tools\//,
|
|
31
|
+
/forge:init/,
|
|
32
|
+
/forge:health/,
|
|
33
|
+
/forge:regenerate/,
|
|
34
|
+
/forge:update/,
|
|
35
|
+
/forge:add-pipeline/,
|
|
36
|
+
];
|
|
37
|
+
// ── Pure helpers ──────────────────────────────────────────────────────────────
|
|
38
|
+
/**
|
|
39
|
+
* Returns true if the command matches any Forge-related pattern.
|
|
40
|
+
* Mirrors `isForgeRelated()` from triage-error.js.
|
|
41
|
+
*/
|
|
42
|
+
export function isForgeRelated(command) {
|
|
43
|
+
return FORGE_PATTERNS.some((p) => p.test(command));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Build the ctx.ui.notify message for a failed Forge-related command.
|
|
47
|
+
*
|
|
48
|
+
* Format (condensed for notification surface):
|
|
49
|
+
* FORGE_ERROR_TRIAGE: A Forge command just failed. [First error line: "...". ]
|
|
50
|
+
* Would you like to file a bug? Run /forge:report-bug
|
|
51
|
+
*
|
|
52
|
+
* @param command The original bash command string (unused in message body; kept for future use).
|
|
53
|
+
* @param outputSnippet First few lines of tool output, already joined to a single string.
|
|
54
|
+
* Empty string if no output is available.
|
|
55
|
+
*/
|
|
56
|
+
export function buildTriageMessage(_command, outputSnippet) {
|
|
57
|
+
const snippetPart = outputSnippet ? `First error line: "${outputSnippet}". ` : "";
|
|
58
|
+
return (`FORGE_ERROR_TRIAGE: A Forge command just failed. ` +
|
|
59
|
+
snippetPart +
|
|
60
|
+
`Would you like to file a bug? Run /forge:report-bug`);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=triage-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triage-error.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/hooks/triage-error.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,qFAAqF;AACrF,EAAE;AACF,+EAA+E;AAC/E,4EAA4E;AAC5E,4EAA4E;AAC5E,yBAAyB;AACzB,EAAE;AACF,8EAA8E;AAC9E,kDAAkD;AAClD,EAAE;AACF,wFAAwF;AACxF,EAAE;AACF,aAAa;AACb,8DAA8D;AAC9D,yDAAyD;AAEzD,gFAAgF;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAsB;IAChD,eAAe;IACf,WAAW;IACX,oBAAoB;IACpB,YAAY;IACZ,eAAe;IACf,sBAAsB;IACtB,YAAY;IACZ,cAAc;IACd,kBAAkB;IAClB,cAAc;IACd,oBAAoB;CACX,CAAC;AAEX,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC7C,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,aAAqB;IACzE,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,sBAAsB,aAAa,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,OAAO,CACN,mDAAmD;QACnD,WAAW;QACX,qDAAqD,CACrD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
interface RegistryEntry {
|
|
2
|
+
pattern: RegExp;
|
|
3
|
+
schema: string;
|
|
4
|
+
kind: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const WRITE_REGISTRY: RegistryEntry[];
|
|
7
|
+
export declare function matchWriteRegistry(absPath: string): RegistryEntry | null;
|
|
8
|
+
export declare function applyPiEdits(filePath: string, edits: Array<{
|
|
9
|
+
oldText: string;
|
|
10
|
+
newText: string;
|
|
11
|
+
}>): string;
|
|
12
|
+
export interface WriteGuardResult {
|
|
13
|
+
block: boolean;
|
|
14
|
+
reason?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Check whether a Write or Edit targeting `filePath` with `contents` satisfies
|
|
18
|
+
* the Forge schema for that path.
|
|
19
|
+
*
|
|
20
|
+
* @param filePath Absolute path being written (from event.input.path, resolved).
|
|
21
|
+
* @param contents Post-write/post-edit file contents as a string.
|
|
22
|
+
* @param forgeRoot Absolute path to the Forge plugin root.
|
|
23
|
+
* @returns { block: false } if allowed; { block: true, reason } if blocked.
|
|
24
|
+
*
|
|
25
|
+
* Fail-open: returns { block: false } on any internal error.
|
|
26
|
+
*/
|
|
27
|
+
export declare function checkWriteGuard(filePath: string, contents: string, forgeRoot: string): WriteGuardResult;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
// Write-boundary schema guard — FORGE-S23-T02.
|
|
2
|
+
//
|
|
3
|
+
// Validates Write/Edit tool calls targeting Forge-owned paths (.forge/store/**/*.json
|
|
4
|
+
// and .forge/config.json) against the corresponding JSON schemas.
|
|
5
|
+
//
|
|
6
|
+
// Mirrors the plugin's forge/forge/hooks/validate-write.js logic, ported to
|
|
7
|
+
// TypeScript for pi's synchronous tool_call handler. Key differences from plugin:
|
|
8
|
+
// - No MultiEdit: pi does not have a MultiEdit event type.
|
|
9
|
+
// - Edit semantics: pi edit events use `edits: [{oldText, newText}]` arrays,
|
|
10
|
+
// not `old_string / new_string`. All edits are applied sequentially.
|
|
11
|
+
// - Progress.log (line-pipe-delimited) format is NOT covered — pi agents do not
|
|
12
|
+
// write progress.log directly; store-cli does.
|
|
13
|
+
// - In-process validation via createRequire (no spawn): matches pi's sync constraint.
|
|
14
|
+
//
|
|
15
|
+
// Fail-open philosophy: any internal error (schema not found, validate.js load
|
|
16
|
+
// failure, JSON parse error) logs a warning to stderr and returns { block: false }.
|
|
17
|
+
// A broken validator must never block legitimate work.
|
|
18
|
+
//
|
|
19
|
+
// FORGE_SKIP_WRITE_VALIDATION=1: bypass switch (operator-only). Logs to hooks.log.
|
|
20
|
+
import { createRequire } from "node:module";
|
|
21
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
22
|
+
import * as path from "node:path";
|
|
23
|
+
import { fileURLToPath } from "node:url";
|
|
24
|
+
export const WRITE_REGISTRY = [
|
|
25
|
+
// Core store entities
|
|
26
|
+
{ pattern: /(?:^|\/)\.forge\/store\/features\/[^/]+\.json$/, schema: "feature.schema.json", kind: "feature" },
|
|
27
|
+
{ pattern: /(?:^|\/)\.forge\/store\/sprints\/[^/]+\.json$/, schema: "sprint.schema.json", kind: "sprint" },
|
|
28
|
+
{ pattern: /(?:^|\/)\.forge\/store\/tasks\/[^/]+\.json$/, schema: "task.schema.json", kind: "task" },
|
|
29
|
+
{ pattern: /(?:^|\/)\.forge\/store\/bugs\/[^/]+\.json$/, schema: "bug.schema.json", kind: "bug" },
|
|
30
|
+
// Event sidecars — prefixed with `_`, must be before general event pattern
|
|
31
|
+
{
|
|
32
|
+
pattern: /(?:^|\/)\.forge\/store\/events\/[^/]+\/_[^/]+_usage\.json$/,
|
|
33
|
+
schema: "event-sidecar.schema.json",
|
|
34
|
+
kind: "event-sidecar",
|
|
35
|
+
},
|
|
36
|
+
// Canonical events — any other .json under events/<bucket>/ not starting with `_`
|
|
37
|
+
{
|
|
38
|
+
pattern: /(?:^|\/)\.forge\/store\/events\/[^/]+\/[^_/][^/]*\.json$/,
|
|
39
|
+
schema: "event.schema.json",
|
|
40
|
+
kind: "event",
|
|
41
|
+
},
|
|
42
|
+
// Collation watermark
|
|
43
|
+
{
|
|
44
|
+
pattern: /(?:^|\/)\.forge\/store\/COLLATION_STATE\.json$/,
|
|
45
|
+
schema: "collation-state.schema.json",
|
|
46
|
+
kind: "collation-state",
|
|
47
|
+
},
|
|
48
|
+
// AC#3: Forge config (new — not in plugin registry)
|
|
49
|
+
{ pattern: /(?:^|\/)\.forge\/config\.json$/, schema: "config.schema.json", kind: "config" },
|
|
50
|
+
];
|
|
51
|
+
export function matchWriteRegistry(absPath) {
|
|
52
|
+
if (!absPath || typeof absPath !== "string")
|
|
53
|
+
return null;
|
|
54
|
+
for (const entry of WRITE_REGISTRY) {
|
|
55
|
+
if (entry.pattern.test(absPath))
|
|
56
|
+
return entry;
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
// ── Schema loader ─────────────────────────────────────────────────────────────
|
|
61
|
+
//
|
|
62
|
+
// Resolution order (mirrors plugin's loadSchema()):
|
|
63
|
+
// 1. <bundleRoot>/forge-payload/.schemas/<filename> — bundled npm install
|
|
64
|
+
// 2. <forgeRoot>/schemas/<filename> — dev mode
|
|
65
|
+
//
|
|
66
|
+
// bundleRoot is resolved relative to this module's location:
|
|
67
|
+
// dist/extensions/forgecli/hooks/write-guard.js → dist/
|
|
68
|
+
// → up 3 levels from the hooks/ directory.
|
|
69
|
+
function resolveBundleRoot() {
|
|
70
|
+
// import.meta.url → this file's URL → resolve to package dist/ root
|
|
71
|
+
const thisFile = fileURLToPath(import.meta.url);
|
|
72
|
+
// thisFile: .../dist/extensions/forgecli/hooks/write-guard.js
|
|
73
|
+
// up 4 dirs: hooks → forgecli → extensions → dist → pkg-root
|
|
74
|
+
// We want dist/, which is 3 levels up from this file's directory
|
|
75
|
+
return path.resolve(path.dirname(thisFile), "../../../");
|
|
76
|
+
}
|
|
77
|
+
function loadSchema(filename, forgeRoot) {
|
|
78
|
+
const bundleRoot = resolveBundleRoot();
|
|
79
|
+
const candidates = [
|
|
80
|
+
path.join(bundleRoot, "forge-payload", ".schemas", filename),
|
|
81
|
+
path.join(forgeRoot, "schemas", filename),
|
|
82
|
+
];
|
|
83
|
+
for (const c of candidates) {
|
|
84
|
+
if (existsSync(c)) {
|
|
85
|
+
return JSON.parse(readFileSync(c, "utf8"));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
throw new Error(`schema not found: ${filename} (looked in: ${candidates.join(", ")})`);
|
|
89
|
+
}
|
|
90
|
+
function loadValidator(forgeRoot) {
|
|
91
|
+
const require = createRequire(import.meta.url);
|
|
92
|
+
const bundleRoot = resolveBundleRoot();
|
|
93
|
+
const candidates = [
|
|
94
|
+
path.join(bundleRoot, "forge-payload", "tools", "lib", "validate.js"),
|
|
95
|
+
path.join(forgeRoot, "tools", "lib", "validate.js"),
|
|
96
|
+
];
|
|
97
|
+
for (const c of candidates) {
|
|
98
|
+
if (existsSync(c)) {
|
|
99
|
+
return require(c);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
throw new Error(`validate.js not found (looked in: ${candidates.join(", ")})`);
|
|
103
|
+
}
|
|
104
|
+
// ── Pi edit semantics ──────────────────────────────────────────────────────────
|
|
105
|
+
//
|
|
106
|
+
// Pi edit events carry: { path: string, edits: Array<{oldText: string, newText: string}> }
|
|
107
|
+
// Apply all edits sequentially against the current file contents.
|
|
108
|
+
// Fail-open if the file cannot be read (return empty string).
|
|
109
|
+
export function applyPiEdits(filePath, edits) {
|
|
110
|
+
let contents;
|
|
111
|
+
try {
|
|
112
|
+
contents = existsSync(filePath) ? readFileSync(filePath, "utf8") : "";
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// Fail-open: cannot read file, treat as empty
|
|
116
|
+
contents = "";
|
|
117
|
+
}
|
|
118
|
+
for (const edit of edits) {
|
|
119
|
+
const idx = contents.indexOf(edit.oldText);
|
|
120
|
+
if (idx === -1) {
|
|
121
|
+
// oldText not found — fail-open (do not block due to edit mechanics)
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
contents = contents.slice(0, idx) + edit.newText + contents.slice(idx + edit.oldText.length);
|
|
125
|
+
}
|
|
126
|
+
return contents;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Check whether a Write or Edit targeting `filePath` with `contents` satisfies
|
|
130
|
+
* the Forge schema for that path.
|
|
131
|
+
*
|
|
132
|
+
* @param filePath Absolute path being written (from event.input.path, resolved).
|
|
133
|
+
* @param contents Post-write/post-edit file contents as a string.
|
|
134
|
+
* @param forgeRoot Absolute path to the Forge plugin root.
|
|
135
|
+
* @returns { block: false } if allowed; { block: true, reason } if blocked.
|
|
136
|
+
*
|
|
137
|
+
* Fail-open: returns { block: false } on any internal error.
|
|
138
|
+
*/
|
|
139
|
+
export function checkWriteGuard(filePath, contents, forgeRoot) {
|
|
140
|
+
// Bypass: operator-only escape hatch
|
|
141
|
+
if (process.env.FORGE_SKIP_WRITE_VALIDATION === "1") {
|
|
142
|
+
try {
|
|
143
|
+
// Audit log — best-effort
|
|
144
|
+
import("node:fs").then(({ appendFileSync, mkdirSync }) => {
|
|
145
|
+
const logsDir = path.join(process.cwd(), ".forge", "logs");
|
|
146
|
+
mkdirSync(logsDir, { recursive: true });
|
|
147
|
+
const relPath = path.relative(process.cwd(), filePath);
|
|
148
|
+
appendFileSync(path.join(logsDir, "hooks.log"), `[write-guard] FORGE_SKIP_WRITE_VALIDATION=1 bypass on ${relPath}\n`, "utf8");
|
|
149
|
+
}).catch(() => { });
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
// Audit is best-effort
|
|
153
|
+
}
|
|
154
|
+
return { block: false };
|
|
155
|
+
}
|
|
156
|
+
// Check registry
|
|
157
|
+
const entry = matchWriteRegistry(filePath);
|
|
158
|
+
if (!entry) {
|
|
159
|
+
return { block: false }; // Not a Forge-owned path — allow
|
|
160
|
+
}
|
|
161
|
+
// Load schema and validator (fail-open on any error)
|
|
162
|
+
let validator;
|
|
163
|
+
let schema;
|
|
164
|
+
try {
|
|
165
|
+
validator = loadValidator(forgeRoot);
|
|
166
|
+
schema = loadSchema(entry.schema, forgeRoot);
|
|
167
|
+
}
|
|
168
|
+
catch (err) {
|
|
169
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
170
|
+
try {
|
|
171
|
+
process.stderr.write(`[write-guard] setup error (fail-open): ${msg}\n`);
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
// ignore
|
|
175
|
+
}
|
|
176
|
+
return { block: false };
|
|
177
|
+
}
|
|
178
|
+
// Parse JSON
|
|
179
|
+
let parsed;
|
|
180
|
+
try {
|
|
181
|
+
parsed = JSON.parse(contents);
|
|
182
|
+
}
|
|
183
|
+
catch (err) {
|
|
184
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
185
|
+
const relPath = path.relative(process.cwd(), filePath);
|
|
186
|
+
return {
|
|
187
|
+
block: true,
|
|
188
|
+
reason: `❌ Forge schema violation — write blocked\n` +
|
|
189
|
+
`Path: ${relPath}\n` +
|
|
190
|
+
`Kind: ${entry.kind}\n` +
|
|
191
|
+
`Violation: Invalid JSON: ${msg}\n` +
|
|
192
|
+
`Hint: see forge/schemas/${entry.schema} for the expected shape.\n` +
|
|
193
|
+
"To bypass for one turn (emergency repair): FORGE_SKIP_WRITE_VALIDATION=1.",
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
// Validate
|
|
197
|
+
let errors;
|
|
198
|
+
try {
|
|
199
|
+
errors = validator.validateRecord(parsed, schema);
|
|
200
|
+
}
|
|
201
|
+
catch (err) {
|
|
202
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
203
|
+
try {
|
|
204
|
+
process.stderr.write(`[write-guard] validation error (fail-open): ${msg}\n`);
|
|
205
|
+
}
|
|
206
|
+
catch {
|
|
207
|
+
// ignore
|
|
208
|
+
}
|
|
209
|
+
return { block: false };
|
|
210
|
+
}
|
|
211
|
+
if (errors.length > 0) {
|
|
212
|
+
const relPath = path.relative(process.cwd(), filePath);
|
|
213
|
+
return {
|
|
214
|
+
block: true,
|
|
215
|
+
reason: `❌ Forge schema violation — write blocked\n` +
|
|
216
|
+
`Path: ${relPath}\n` +
|
|
217
|
+
`Kind: ${entry.kind}\n` +
|
|
218
|
+
`Violations:\n - ${errors.join("\n - ")}\n` +
|
|
219
|
+
`Hint: see forge/schemas/${entry.schema} for the full shape.\n` +
|
|
220
|
+
"To bypass for one turn (emergency repair): FORGE_SKIP_WRITE_VALIDATION=1.",
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
return { block: false };
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=write-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-guard.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/hooks/write-guard.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,EAAE;AACF,sFAAsF;AACtF,kEAAkE;AAClE,EAAE;AACF,4EAA4E;AAC5E,kFAAkF;AAClF,6DAA6D;AAC7D,+EAA+E;AAC/E,yEAAyE;AACzE,kFAAkF;AAClF,mDAAmD;AACnD,wFAAwF;AACxF,EAAE;AACF,+EAA+E;AAC/E,oFAAoF;AACpF,uDAAuD;AACvD,EAAE;AACF,mFAAmF;AAEnF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAczC,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC9C,sBAAsB;IACtB,EAAE,OAAO,EAAE,gDAAgD,EAAE,MAAM,EAAE,qBAAqB,EAAE,IAAI,EAAE,SAAS,EAAE;IAC7G,EAAE,OAAO,EAAE,+CAA+C,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1G,EAAE,OAAO,EAAE,6CAA6C,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE;IACpG,EAAE,OAAO,EAAE,4CAA4C,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE;IAEjG,2EAA2E;IAC3E;QACC,OAAO,EAAE,4DAA4D;QACrE,MAAM,EAAE,2BAA2B;QACnC,IAAI,EAAE,eAAe;KACrB;IAED,kFAAkF;IAClF;QACC,OAAO,EAAE,0DAA0D;QACnE,MAAM,EAAE,mBAAmB;QAC3B,IAAI,EAAE,OAAO;KACb;IAED,sBAAsB;IACtB;QACC,OAAO,EAAE,gDAAgD;QACzD,MAAM,EAAE,6BAA6B;QACrC,IAAI,EAAE,iBAAiB;KACvB;IAED,oDAAoD;IACpD,EAAE,OAAO,EAAE,gCAAgC,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE;CAC3F,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,OAAe;IACjD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzD,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,iFAAiF;AACjF,EAAE;AACF,oDAAoD;AACpD,6EAA6E;AAC7E,kEAAkE;AAClE,EAAE;AACF,6DAA6D;AAC7D,4DAA4D;AAC5D,6CAA6C;AAE7C,SAAS,iBAAiB;IACzB,oEAAoE;IACpE,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,8DAA8D;IAC9D,6DAA6D;IAC7D,iEAAiE;IACjE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB,EAAE,SAAiB;IACtD,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC;KACzC,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC5B,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5C,CAAC;IACF,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,gBAAgB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxF,CAAC;AAYD,SAAS,aAAa,CAAC,SAAiB;IACvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC;QACrE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC;KACnD,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC5B,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACnB,OAAO,OAAO,CAAC,CAAC,CAAmB,CAAC;QACrC,CAAC;IACF,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChF,CAAC;AAED,kFAAkF;AAClF,EAAE;AACF,2FAA2F;AAC3F,kEAAkE;AAClE,8DAA8D;AAE9D,MAAM,UAAU,YAAY,CAC3B,QAAgB,EAChB,KAAkD;IAElD,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACJ,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACR,8CAA8C;QAC9C,QAAQ,GAAG,EAAE,CAAC;IACf,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YAChB,qEAAqE;YACrE,SAAS;QACV,CAAC;QACD,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AASD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC9B,QAAgB,EAChB,QAAgB,EAChB,SAAiB;IAEjB,qCAAqC;IACrC,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,GAAG,EAAE,CAAC;QACrD,IAAI,CAAC;YACJ,0BAA0B;YAC1B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,EAAE;gBACxD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC3D,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;gBACvD,cAAc,CACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAC/B,yDAAyD,OAAO,IAAI,EACpE,MAAM,CACN,CAAC;YACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACR,uBAAuB;QACxB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,iBAAiB;IACjB,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,iCAAiC;IAC3D,CAAC;IAED,qDAAqD;IACrD,IAAI,SAAyB,CAAC;IAC9B,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACJ,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,CAAC;YACJ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,GAAG,IAAI,CAAC,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACR,SAAS;QACV,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,aAAa;IACb,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QACvD,OAAO;YACN,KAAK,EAAE,IAAI;YACX,MAAM,EACL,4CAA4C;gBAC5C,SAAS,OAAO,IAAI;gBACpB,SAAS,KAAK,CAAC,IAAI,IAAI;gBACvB,4BAA4B,GAAG,IAAI;gBACnC,2BAA2B,KAAK,CAAC,MAAM,4BAA4B;gBACnE,2EAA2E;SAC5E,CAAC;IACH,CAAC;IAED,WAAW;IACX,IAAI,MAAgB,CAAC;IACrB,IAAI,CAAC;QACJ,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,CAAC;YACJ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,GAAG,IAAI,CAAC,CAAC;QAC9E,CAAC;QAAC,MAAM,CAAC;YACR,SAAS;QACV,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QACvD,OAAO;YACN,KAAK,EAAE,IAAI;YACX,MAAM,EACL,4CAA4C;gBAC5C,SAAS,OAAO,IAAI;gBACpB,SAAS,KAAK,CAAC,IAAI,IAAI;gBACvB,oBAAoB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI;gBAC7C,2BAA2B,KAAK,CAAC,MAAM,wBAAwB;gBAC/D,2EAA2E;SAC5E,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -35,6 +35,7 @@ import { registerRegenerate } from "./regenerate.js";
|
|
|
35
35
|
import { registerSprintIntake } from "./sprint-intake.js";
|
|
36
36
|
import { registerSprintPlan } from "./sprint-plan.js";
|
|
37
37
|
import { triggerUpdateCheck } from "./update-check.js";
|
|
38
|
+
import { buildForgeAwarenessMsg, buildMultiPluginMsg, buildPendingMigrationMsg, syncForgeRootAndRef, } from "./hooks/check-update.js";
|
|
38
39
|
import { mountWhatsNewWidgetOnStartup, registerChangelogCommand } from "./whats-new-widget.js";
|
|
39
40
|
import { registerUsageHook } from "./usage-hook.js";
|
|
40
41
|
import { registerReadCommand } from "./read-command.js";
|
|
@@ -47,7 +48,20 @@ import { registerApprove } from "./approve.js";
|
|
|
47
48
|
import { registerCommit } from "./commit.js";
|
|
48
49
|
import { registerValidate } from "./validate.js";
|
|
49
50
|
import { registerCollate } from "./collate.js";
|
|
51
|
+
import { registerRetrospective } from "./retrospective.js";
|
|
52
|
+
import { registerCalibrate } from "./calibrate.js";
|
|
53
|
+
import { registerMaterialize } from "./materialize.js";
|
|
54
|
+
import { registerMigrate } from "./migrate.js";
|
|
55
|
+
import { registerUpdateTools } from "./update-tools.js";
|
|
56
|
+
import { registerStoreQuery } from "./store-query.js";
|
|
57
|
+
import { registerStatusCommand } from "./status-command.js";
|
|
50
58
|
import { registerConfigCommand } from "./config-command.js";
|
|
59
|
+
import { registerAddTask } from "./add-task.js";
|
|
60
|
+
import { registerAddPipeline } from "./add-pipeline.js";
|
|
61
|
+
import { registerQuizAgent } from "./quiz-agent.js";
|
|
62
|
+
import { registerRemoveCommand } from "./remove-command.js";
|
|
63
|
+
import { registerReportBug } from "./report-bug.js";
|
|
64
|
+
import { registerStoreRepair } from "./store-repair.js";
|
|
51
65
|
import { getInputRouter } from "./input-router.js";
|
|
52
66
|
import { registerTestOrchestrate } from "./test-orchestrate.js";
|
|
53
67
|
import { registerThreadSwitcher } from "./thread-switcher.js";
|
|
@@ -217,6 +231,39 @@ export default async function forgecli(pi) {
|
|
|
217
231
|
if (meta) {
|
|
218
232
|
ctx.ui.notify(`${meta.name} [${meta.prefix}]`, "info");
|
|
219
233
|
}
|
|
234
|
+
// 3a. Forge-awareness context + project-state sync (FORGE-S23-T05).
|
|
235
|
+
// Port of check-update.js functions (1), (3), (4), (5).
|
|
236
|
+
// All wrapped in try/catch — session_start must never throw.
|
|
237
|
+
if (forgeConfig) {
|
|
238
|
+
// (1) Forge-awareness context injection (AC#1)
|
|
239
|
+
try {
|
|
240
|
+
const awarenessMsg = buildForgeAwarenessMsg(forgeConfig.configPath);
|
|
241
|
+
if (awarenessMsg)
|
|
242
|
+
ctx.ui.notify(awarenessMsg, "info");
|
|
243
|
+
}
|
|
244
|
+
catch { /* non-fatal */ }
|
|
245
|
+
// (4) Multi-plugin scan — notify if multiple Forge installations found (AC#3)
|
|
246
|
+
try {
|
|
247
|
+
const multiPluginMsg = buildMultiPluginMsg({ forgeRoot: forgeRoot, configPath: forgeConfig.configPath });
|
|
248
|
+
if (multiPluginMsg)
|
|
249
|
+
ctx.ui.notify(multiPluginMsg, "info");
|
|
250
|
+
}
|
|
251
|
+
catch { /* non-fatal */ }
|
|
252
|
+
// (3) Distribution-switch detection + forgeRoot/forgeRef sync (AC#2, AC#6)
|
|
253
|
+
try {
|
|
254
|
+
const switchMsg = syncForgeRootAndRef({ forgeRoot: forgeRoot, configPath: forgeConfig.configPath });
|
|
255
|
+
if (switchMsg)
|
|
256
|
+
ctx.ui.notify(switchMsg, "warning");
|
|
257
|
+
}
|
|
258
|
+
catch { /* non-fatal */ }
|
|
259
|
+
// (5) Pending-migration state surfacing (AC#4)
|
|
260
|
+
try {
|
|
261
|
+
const pendingMsg = buildPendingMigrationMsg(forgeConfig.configPath);
|
|
262
|
+
if (pendingMsg)
|
|
263
|
+
ctx.ui.notify(pendingMsg, "warning");
|
|
264
|
+
}
|
|
265
|
+
catch { /* non-fatal */ }
|
|
266
|
+
}
|
|
220
267
|
// 4. Update-check probe + banner (FORGE-S16-T14, issue #18 part 1).
|
|
221
268
|
// Fire-and-forget — never blocks startup; fail-silent on the user surface.
|
|
222
269
|
if (PKG_VERSIONS.cliVersion && PKG_VERSIONS.bundledForgeVersion) {
|
|
@@ -383,6 +430,19 @@ export default async function forgecli(pi) {
|
|
|
383
430
|
registerCommit(pi);
|
|
384
431
|
registerValidate(pi);
|
|
385
432
|
registerCollate(pi);
|
|
433
|
+
registerRetrospective(pi);
|
|
434
|
+
registerCalibrate(pi); // FORGE-S23-T08: orchestrator handler for drift detection + patch proposal
|
|
435
|
+
registerMaterialize(pi); // FORGE-S23-T09: Atomic handler — fill missing/stubbed artifacts
|
|
436
|
+
registerMigrate(pi); // FORGE-S23-T09: Hybrid handler — structural (subagent) + schema (runMigrations)
|
|
437
|
+
registerUpdateTools(pi); // FORGE-S23-T10: Atomic handler — copy bundled schemas to .forge/schemas/
|
|
438
|
+
registerStoreQuery(pi, { forgeRoot }); // FORGE-S23-T10: Atomic handler — store-cli query/nlp dispatch
|
|
439
|
+
registerStatusCommand(pi, { forgeRoot }); // FORGE-S23-T10: v0 sprint/task summary widget
|
|
440
|
+
registerAddTask(pi, { forgeRoot }); // FORGE-S23-T11: Kickoff shim — add a task mid-sprint
|
|
441
|
+
registerAddPipeline(pi, { forgeRoot }); // FORGE-S23-T11: Kickoff shim — pipeline manager
|
|
442
|
+
registerQuizAgent(pi, { forgeRoot }); // FORGE-S23-T11: Kickoff shim — KB quiz
|
|
443
|
+
registerRemoveCommand(pi, { forgeRoot }); // FORGE-S23-T11: Kickoff shim — remove Forge artifacts
|
|
444
|
+
registerReportBug(pi, { forgeRoot }); // FORGE-S23-T11: Kickoff shim — file bug against Forge
|
|
445
|
+
registerStoreRepair(pi, { forgeRoot }); // FORGE-S23-T11: Kickoff shim — diagnose/repair store
|
|
386
446
|
// ── /forge:run-workflow generic workflow engine (Plan 14) ────────────────
|
|
387
447
|
// Resolution order: CWD/workflows/<id> first (user-authored workflows),
|
|
388
448
|
// then bundled PKG_ROOT/workflows/<id> (shipped examples). Registered unconditionally.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/index.ts"],"names":[],"mappings":"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"}
|