gencode-ai 0.1.2 → 0.2.0
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 +15 -17
- package/dist/agent/agent.d.ts +43 -0
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +107 -4
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/index.d.ts +1 -0
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/types.d.ts +20 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/checkpointing/checkpoint-manager.d.ts +87 -0
- package/dist/checkpointing/checkpoint-manager.d.ts.map +1 -0
- package/dist/checkpointing/checkpoint-manager.js +281 -0
- package/dist/checkpointing/checkpoint-manager.js.map +1 -0
- package/dist/checkpointing/index.d.ts +29 -0
- package/dist/checkpointing/index.d.ts.map +1 -0
- package/dist/checkpointing/index.js +29 -0
- package/dist/checkpointing/index.js.map +1 -0
- package/dist/checkpointing/types.d.ts +98 -0
- package/dist/checkpointing/types.d.ts.map +1 -0
- package/dist/checkpointing/types.js +7 -0
- package/dist/checkpointing/types.js.map +1 -0
- package/dist/cli/components/App.d.ts.map +1 -1
- package/dist/cli/components/App.js +193 -7
- package/dist/cli/components/App.js.map +1 -1
- package/dist/cli/components/CommandSuggestions.d.ts.map +1 -1
- package/dist/cli/components/CommandSuggestions.js +5 -0
- package/dist/cli/components/CommandSuggestions.js.map +1 -1
- package/dist/cli/components/Messages.d.ts +7 -1
- package/dist/cli/components/Messages.d.ts.map +1 -1
- package/dist/cli/components/Messages.js +28 -2
- package/dist/cli/components/Messages.js.map +1 -1
- package/dist/cli/components/ModeIndicator.d.ts +42 -0
- package/dist/cli/components/ModeIndicator.d.ts.map +1 -0
- package/dist/cli/components/ModeIndicator.js +52 -0
- package/dist/cli/components/ModeIndicator.js.map +1 -0
- package/dist/cli/components/PlanApproval.d.ts +36 -0
- package/dist/cli/components/PlanApproval.d.ts.map +1 -0
- package/dist/cli/components/PlanApproval.js +154 -0
- package/dist/cli/components/PlanApproval.js.map +1 -0
- package/dist/cli/components/QuestionPrompt.d.ts +23 -0
- package/dist/cli/components/QuestionPrompt.d.ts.map +1 -0
- package/dist/cli/components/QuestionPrompt.js +231 -0
- package/dist/cli/components/QuestionPrompt.js.map +1 -0
- package/dist/cli/components/index.d.ts +1 -0
- package/dist/cli/components/index.d.ts.map +1 -1
- package/dist/cli/components/index.js +1 -0
- package/dist/cli/components/index.js.map +1 -1
- package/dist/cli/components/theme.d.ts +9 -0
- package/dist/cli/components/theme.d.ts.map +1 -1
- package/dist/cli/components/theme.js +14 -1
- package/dist/cli/components/theme.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/permissions/types.d.ts.map +1 -1
- package/dist/permissions/types.js +2 -0
- package/dist/permissions/types.js.map +1 -1
- package/dist/planning/index.d.ts +13 -0
- package/dist/planning/index.d.ts.map +1 -0
- package/dist/planning/index.js +15 -0
- package/dist/planning/index.js.map +1 -0
- package/dist/planning/plan-file.d.ts +59 -0
- package/dist/planning/plan-file.d.ts.map +1 -0
- package/dist/planning/plan-file.js +278 -0
- package/dist/planning/plan-file.js.map +1 -0
- package/dist/planning/state.d.ts +127 -0
- package/dist/planning/state.d.ts.map +1 -0
- package/dist/planning/state.js +261 -0
- package/dist/planning/state.js.map +1 -0
- package/dist/planning/tools/enter-plan-mode.d.ts +25 -0
- package/dist/planning/tools/enter-plan-mode.d.ts.map +1 -0
- package/dist/planning/tools/enter-plan-mode.js +98 -0
- package/dist/planning/tools/enter-plan-mode.js.map +1 -0
- package/dist/planning/tools/exit-plan-mode.d.ts +24 -0
- package/dist/planning/tools/exit-plan-mode.d.ts.map +1 -0
- package/dist/planning/tools/exit-plan-mode.js +149 -0
- package/dist/planning/tools/exit-plan-mode.js.map +1 -0
- package/dist/planning/types.d.ts +100 -0
- package/dist/planning/types.d.ts.map +1 -0
- package/dist/planning/types.js +28 -0
- package/dist/planning/types.js.map +1 -0
- package/dist/pricing/calculator.d.ts +21 -0
- package/dist/pricing/calculator.d.ts.map +1 -0
- package/dist/pricing/calculator.js +59 -0
- package/dist/pricing/calculator.js.map +1 -0
- package/dist/pricing/index.d.ts +7 -0
- package/dist/pricing/index.d.ts.map +1 -0
- package/dist/pricing/index.js +7 -0
- package/dist/pricing/index.js.map +1 -0
- package/dist/pricing/models.d.ts +20 -0
- package/dist/pricing/models.d.ts.map +1 -0
- package/dist/pricing/models.js +322 -0
- package/dist/pricing/models.js.map +1 -0
- package/dist/pricing/types.d.ts +30 -0
- package/dist/pricing/types.d.ts.map +1 -0
- package/dist/pricing/types.js +5 -0
- package/dist/pricing/types.js.map +1 -0
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +17 -10
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +21 -14
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +12 -8
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/types.d.ts +2 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/vertex-ai.d.ts.map +1 -1
- package/dist/providers/vertex-ai.js +17 -10
- package/dist/providers/vertex-ai.js.map +1 -1
- package/dist/session/manager.d.ts +4 -0
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +8 -0
- package/dist/session/manager.js.map +1 -1
- package/dist/tools/builtin/ask-user.d.ts +64 -0
- package/dist/tools/builtin/ask-user.d.ts.map +1 -0
- package/dist/tools/builtin/ask-user.js +148 -0
- package/dist/tools/builtin/ask-user.js.map +1 -0
- package/dist/tools/index.d.ts +19 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +11 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/registry.d.ts +13 -0
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +79 -2
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/types.d.ts +17 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/docs/cost-tracking-comparison.md +904 -0
- package/docs/operating-modes.md +96 -0
- package/docs/proposals/0012-ask-user-question.md +66 -1
- package/docs/proposals/0025-cost-tracking.md +60 -2
- package/docs/proposals/README.md +2 -2
- package/examples/test-ask-user.ts +167 -0
- package/examples/test-checkpointing.ts +121 -0
- package/examples/test-cost-tracking.ts +77 -0
- package/examples/test-interrupt-cleanup.ts +94 -0
- package/package.json +1 -1
- package/src/agent/agent.ts +130 -4
- package/src/agent/index.ts +1 -0
- package/src/agent/types.ts +19 -1
- package/src/checkpointing/checkpoint-manager.ts +327 -0
- package/src/checkpointing/index.ts +45 -0
- package/src/checkpointing/types.ts +104 -0
- package/src/cli/components/App.tsx +259 -8
- package/src/cli/components/CommandSuggestions.tsx +5 -0
- package/src/cli/components/Messages.tsx +66 -4
- package/src/cli/components/ModeIndicator.tsx +174 -0
- package/src/cli/components/PlanApproval.tsx +327 -0
- package/src/cli/components/QuestionPrompt.tsx +462 -0
- package/src/cli/components/index.ts +1 -0
- package/src/cli/components/theme.ts +14 -1
- package/src/index.ts +15 -0
- package/src/permissions/types.ts +2 -0
- package/src/planning/index.ts +53 -0
- package/src/planning/plan-file.ts +326 -0
- package/src/planning/state.ts +305 -0
- package/src/planning/tools/enter-plan-mode.ts +111 -0
- package/src/planning/tools/exit-plan-mode.ts +170 -0
- package/src/planning/types.ts +150 -0
- package/src/pricing/calculator.ts +71 -0
- package/src/pricing/index.ts +7 -0
- package/src/pricing/models.ts +334 -0
- package/src/pricing/types.ts +32 -0
- package/src/prompts/system/base.txt +42 -0
- package/src/prompts/tools/ask-user.txt +110 -0
- package/src/providers/anthropic.ts +21 -10
- package/src/providers/gemini.ts +25 -14
- package/src/providers/openai.ts +17 -8
- package/src/providers/types.ts +3 -0
- package/src/providers/vertex-ai.ts +21 -10
- package/src/session/manager.ts +9 -0
- package/src/tools/builtin/ask-user.ts +185 -0
- package/src/tools/index.ts +23 -0
- package/src/tools/registry.ts +95 -2
- package/src/tools/types.ts +18 -0
- package/.gencode/settings.local.json +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -31,6 +31,15 @@ export declare const icons: {
|
|
|
31
31
|
cursor: string;
|
|
32
32
|
radio: string;
|
|
33
33
|
radioEmpty: string;
|
|
34
|
+
checkbox: string;
|
|
35
|
+
checkboxEmpty: string;
|
|
36
|
+
chipLeft: string;
|
|
37
|
+
chipRight: string;
|
|
38
|
+
boxTop: string;
|
|
39
|
+
boxBottom: string;
|
|
40
|
+
boxVertical: string;
|
|
34
41
|
treeEnd: string;
|
|
42
|
+
modePlan: string;
|
|
43
|
+
modeAccept: string;
|
|
35
44
|
};
|
|
36
45
|
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/cli/components/theme.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;CAclB,CAAC;AAEF,eAAO,MAAM,KAAK
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/cli/components/theme.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;CAclB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;CAoCjB,CAAC"}
|
|
@@ -34,10 +34,23 @@ export const icons = {
|
|
|
34
34
|
// UI
|
|
35
35
|
thinking: '✱', // Star for thinking state
|
|
36
36
|
cursor: '▋',
|
|
37
|
-
// Selection
|
|
37
|
+
// Selection (single-select)
|
|
38
38
|
radio: '●', // Filled radio for selected
|
|
39
39
|
radioEmpty: '○', // Empty radio for unselected
|
|
40
|
+
// Selection (multi-select)
|
|
41
|
+
checkbox: '☑', // Checked checkbox
|
|
42
|
+
checkboxEmpty: '☐', // Empty checkbox
|
|
43
|
+
// Chip/tag borders (Claude Code style headers)
|
|
44
|
+
chipLeft: '╭─',
|
|
45
|
+
chipRight: '─╮',
|
|
46
|
+
// Box drawing
|
|
47
|
+
boxTop: '╭',
|
|
48
|
+
boxBottom: '╰',
|
|
49
|
+
boxVertical: '│',
|
|
40
50
|
// Tree connectors
|
|
41
51
|
treeEnd: '└', // Tree end connector for tool results
|
|
52
|
+
// Mode indicators
|
|
53
|
+
modePlan: '⏸', // Pause for plan mode
|
|
54
|
+
modeAccept: '⏵⏵', // Double play for accept mode
|
|
42
55
|
};
|
|
43
56
|
//# sourceMappingURL=theme.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/cli/components/theme.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,SAAS,EAAE,aAAa;IAC/B,UAAU,EAAE,SAAS,EAAE,aAAa;IACpC,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS,EAAE,cAAc;IAClC,OAAO,EAAE,SAAS,EAAE,YAAY;IAChC,KAAK,EAAE,SAAS,EAAE,UAAU;IAC5B,IAAI,EAAE,SAAS,EAAE,WAAW;IAC5B,IAAI,EAAE,SAAS,EAAE,YAAY;IAC7B,aAAa,EAAE,SAAS,EAAE,YAAY;IACtC,SAAS,EAAE,SAAS,EAAE,YAAY;IAClC,IAAI,EAAE,SAAS,EAAE,aAAa;IAC9B,SAAS,EAAE,SAAS,EAAE,YAAY;IAClC,OAAO,EAAE,SAAS,EAAE,8CAA8C;CACnE,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,uCAAuC;IACvC,UAAU,EAAE,GAAG,EAAE,yBAAyB;IAC1C,SAAS,EAAE,GAAG,EAAE,8BAA8B;IAC9C,SAAS;IACT,MAAM,EAAE,GAAG;IACX,SAAS;IACT,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,GAAG;IACT,QAAQ;IACR,IAAI,EAAE,GAAG,EAAE,sBAAsB;IACjC,KAAK,EAAE,GAAG,EAAE,8CAA8C;IAC1D,KAAK,EAAE,GAAG;IACV,KAAK;IACL,QAAQ,EAAE,GAAG,EAAE,0BAA0B;IACzC,MAAM,EAAE,GAAG;IACX,
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/cli/components/theme.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,SAAS,EAAE,aAAa;IAC/B,UAAU,EAAE,SAAS,EAAE,aAAa;IACpC,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS,EAAE,cAAc;IAClC,OAAO,EAAE,SAAS,EAAE,YAAY;IAChC,KAAK,EAAE,SAAS,EAAE,UAAU;IAC5B,IAAI,EAAE,SAAS,EAAE,WAAW;IAC5B,IAAI,EAAE,SAAS,EAAE,YAAY;IAC7B,aAAa,EAAE,SAAS,EAAE,YAAY;IACtC,SAAS,EAAE,SAAS,EAAE,YAAY;IAClC,IAAI,EAAE,SAAS,EAAE,aAAa;IAC9B,SAAS,EAAE,SAAS,EAAE,YAAY;IAClC,OAAO,EAAE,SAAS,EAAE,8CAA8C;CACnE,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,uCAAuC;IACvC,UAAU,EAAE,GAAG,EAAE,yBAAyB;IAC1C,SAAS,EAAE,GAAG,EAAE,8BAA8B;IAC9C,SAAS;IACT,MAAM,EAAE,GAAG;IACX,SAAS;IACT,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,GAAG;IACT,QAAQ;IACR,IAAI,EAAE,GAAG,EAAE,sBAAsB;IACjC,KAAK,EAAE,GAAG,EAAE,8CAA8C;IAC1D,KAAK,EAAE,GAAG;IACV,KAAK;IACL,QAAQ,EAAE,GAAG,EAAE,0BAA0B;IACzC,MAAM,EAAE,GAAG;IACX,4BAA4B;IAC5B,KAAK,EAAE,GAAG,EAAE,4BAA4B;IACxC,UAAU,EAAE,GAAG,EAAE,6BAA6B;IAC9C,2BAA2B;IAC3B,QAAQ,EAAE,GAAG,EAAE,mBAAmB;IAClC,aAAa,EAAE,GAAG,EAAE,iBAAiB;IACrC,+CAA+C;IAC/C,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,cAAc;IACd,MAAM,EAAE,GAAG;IACX,SAAS,EAAE,GAAG;IACd,WAAW,EAAE,GAAG;IAChB,kBAAkB;IAClB,OAAO,EAAE,GAAG,EAAE,sCAAsC;IACpD,kBAAkB;IAClB,QAAQ,EAAE,GAAG,EAAE,sBAAsB;IACrC,UAAU,EAAE,IAAI,EAAE,8BAA8B;CACjD,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,4 +9,5 @@ export { type Tool, type ToolContext, type ToolResult as ToolExecutionResult, To
|
|
|
9
9
|
export { type PermissionMode, type PermissionRule, type PermissionConfig, type ConfirmCallback, PermissionManager, DEFAULT_PERMISSION_CONFIG, } from './permissions/index.js';
|
|
10
10
|
export { type AgentConfig, type AgentEvent, type AgentEventText, type AgentEventToolStart, type AgentEventToolResult, type AgentEventError, type AgentEventDone, Agent, } from './agent/index.js';
|
|
11
11
|
export { type Session, type SessionMetadata, type SessionListItem, type SessionConfig, SessionManager, DEFAULT_SESSION_CONFIG, } from './session/index.js';
|
|
12
|
+
export { type ChangeType, type FileCheckpoint, type CheckpointSession, type RewindOptions, type RewindResult, type CheckpointSummary, type RecordChangeInput, CheckpointManager, getCheckpointManager, initCheckpointManager, resetCheckpointManager, } from './checkpointing/index.js';
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,YAAY,EAEjB,cAAc,EACd,iBAAiB,EACjB,cAAc,EAEd,cAAc,EACd,aAAa,EACb,YAAY,GACb,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,UAAU,IAAI,mBAAmB,EACtC,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,GACN,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,cAAc,EACd,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,YAAY,EAEjB,cAAc,EACd,iBAAiB,EACjB,cAAc,EAEd,cAAc,EACd,aAAa,EACb,YAAY,GACb,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,UAAU,IAAI,mBAAmB,EACtC,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,GACN,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,cAAc,EACd,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -18,4 +18,6 @@ export { PermissionManager, DEFAULT_PERMISSION_CONFIG, } from './permissions/ind
|
|
|
18
18
|
export { Agent, } from './agent/index.js';
|
|
19
19
|
// Session
|
|
20
20
|
export { SessionManager, DEFAULT_SESSION_CONFIG, } from './session/index.js';
|
|
21
|
+
// Checkpointing
|
|
22
|
+
export { CheckpointManager, getCheckpointManager, initCheckpointManager, resetCheckpointManager, } from './checkpointing/index.js';
|
|
21
23
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY;AACZ,OAAO;AAqBL,YAAY;AACZ,cAAc,EACd,iBAAiB,EACjB,cAAc;AACd,UAAU;AACV,cAAc,EACd,aAAa,EACb,YAAY,GACb,MAAM,sBAAsB,CAAC;AAE9B,QAAQ;AACR,OAAO,EAIL,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAE1B,cAAc;AACd,OAAO,EAKL,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,QAAQ;AACR,OAAO,EAQL,KAAK,GACN,MAAM,kBAAkB,CAAC;AAE1B,UAAU;AACV,OAAO,EAKL,cAAc,EACd,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY;AACZ,OAAO;AAqBL,YAAY;AACZ,cAAc,EACd,iBAAiB,EACjB,cAAc;AACd,UAAU;AACV,cAAc,EACd,aAAa,EACb,YAAY,GACb,MAAM,sBAAsB,CAAC;AAE9B,QAAQ;AACR,OAAO,EAIL,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAE1B,cAAc;AACd,OAAO,EAKL,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,QAAQ;AACR,OAAO,EAQL,KAAK,GACN,MAAM,kBAAkB,CAAC;AAE1B,UAAU;AACV,OAAO,EAKL,cAAc,EACd,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,gBAAgB;AAChB,OAAO,EAQL,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/permissions/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/permissions/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,8 @@ export const DEFAULT_PERMISSION_CONFIG = {
|
|
|
22
22
|
{ tool: 'LSP', mode: 'auto', description: 'Language server' },
|
|
23
23
|
// Internal state management - auto-approve (no side effects)
|
|
24
24
|
{ tool: 'TodoWrite', mode: 'auto', description: 'Task tracking' },
|
|
25
|
+
// User interaction - auto-approve (asking user questions, not dangerous)
|
|
26
|
+
{ tool: 'AskUserQuestion', mode: 'auto', description: 'User questioning' },
|
|
25
27
|
],
|
|
26
28
|
allowedPrompts: [],
|
|
27
29
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/permissions/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA6MH,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAqB;IACzD,WAAW,EAAE,SAAS;IACtB,KAAK,EAAE;QACL,wDAAwD;QACxD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE;QAC3D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE;QAC/D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE;QAC7D,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE;QAC7D,6DAA6D;QAC7D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/permissions/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA6MH,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAqB;IACzD,WAAW,EAAE,SAAS;IACtB,KAAK,EAAE;QACL,wDAAwD;QACxD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE;QAC3D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE;QAC/D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE;QAC7D,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE;QAC7D,6DAA6D;QAC7D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE;QACjE,yEAAyE;QACzE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE;KAC3E;IACD,cAAc,EAAE,EAAE;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAyB;IACvD;QACE,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,sBAAsB;QACnC,QAAQ,EAAE,GAAG;KACd;IACD;QACE,MAAM,EAAE,cAAc;QACtB,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,0BAA0B;QACvC,QAAQ,EAAE,GAAG;KACd;IACD;QACE,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,sBAAsB;QACnC,QAAQ,EAAE,GAAG;KACd;CACF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Planning Module
|
|
3
|
+
*
|
|
4
|
+
* Plan Mode for GenCode - allows the LLM to design implementation
|
|
5
|
+
* approaches before writing code, with read-only exploration tools.
|
|
6
|
+
*/
|
|
7
|
+
export type { PlanPhase, PlanApprovalOption, AllowedPrompt, PlanModeState, PlanFile, PlanModeAllowedTool, PlanModeBlockedTool, ModeType, PlanApprovalState, PlanModeEvent, } from './types.js';
|
|
8
|
+
export { PLAN_MODE_ALLOWED_TOOLS, PLAN_MODE_BLOCKED_TOOLS } from './types.js';
|
|
9
|
+
export { PlanModeManager, getPlanModeManager, resetPlanModeManager, isPlanModeActive, getCurrentMode, enterPlanMode, exitPlanMode, togglePlanMode, } from './state.js';
|
|
10
|
+
export { generatePlanFileName, getPlansDir, ensurePlansDir, createPlanFile, readPlanFile, writePlanFile, listPlanFiles, deletePlanFile, parseFilesToChange, parsePreApprovedPermissions, getDisplayPath, } from './plan-file.js';
|
|
11
|
+
export { enterPlanModeTool } from './tools/enter-plan-mode.js';
|
|
12
|
+
export { exitPlanModeTool } from './tools/exit-plan-mode.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/planning/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,QAAQ,EACR,mBAAmB,EACnB,mBAAmB,EACnB,QAAQ,EACR,iBAAiB,EACjB,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAG9E,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,cAAc,EACd,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,2BAA2B,EAC3B,cAAc,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Planning Module
|
|
3
|
+
*
|
|
4
|
+
* Plan Mode for GenCode - allows the LLM to design implementation
|
|
5
|
+
* approaches before writing code, with read-only exploration tools.
|
|
6
|
+
*/
|
|
7
|
+
export { PLAN_MODE_ALLOWED_TOOLS, PLAN_MODE_BLOCKED_TOOLS } from './types.js';
|
|
8
|
+
// State Management
|
|
9
|
+
export { PlanModeManager, getPlanModeManager, resetPlanModeManager, isPlanModeActive, getCurrentMode, enterPlanMode, exitPlanMode, togglePlanMode, } from './state.js';
|
|
10
|
+
// Plan File Utilities
|
|
11
|
+
export { generatePlanFileName, getPlansDir, ensurePlansDir, createPlanFile, readPlanFile, writePlanFile, listPlanFiles, deletePlanFile, parseFilesToChange, parsePreApprovedPermissions, getDisplayPath, } from './plan-file.js';
|
|
12
|
+
// Tools
|
|
13
|
+
export { enterPlanModeTool } from './tools/enter-plan-mode.js';
|
|
14
|
+
export { exitPlanModeTool } from './tools/exit-plan-mode.js';
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/planning/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE9E,mBAAmB;AACnB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,sBAAsB;AACtB,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,cAAc,EACd,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,2BAA2B,EAC3B,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,QAAQ;AACR,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plan File Utilities
|
|
3
|
+
*
|
|
4
|
+
* Manages plan files stored in .gencode/plans/ directory.
|
|
5
|
+
* Generates unique filenames with timestamps and slugs.
|
|
6
|
+
*/
|
|
7
|
+
import type { PlanFile } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Generate plan file name
|
|
10
|
+
* Format: <memorable-name>.md (like Claude Code)
|
|
11
|
+
*/
|
|
12
|
+
export declare function generatePlanFileName(taskDescription?: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Get the plans directory path for a project
|
|
15
|
+
*/
|
|
16
|
+
export declare function getPlansDir(cwd: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Ensure the plans directory exists
|
|
19
|
+
*/
|
|
20
|
+
export declare function ensurePlansDir(cwd: string): Promise<string>;
|
|
21
|
+
/**
|
|
22
|
+
* Create a new plan file
|
|
23
|
+
*/
|
|
24
|
+
export declare function createPlanFile(cwd: string, taskDescription?: string): Promise<PlanFile>;
|
|
25
|
+
/**
|
|
26
|
+
* Read a plan file
|
|
27
|
+
*/
|
|
28
|
+
export declare function readPlanFile(filePath: string): Promise<PlanFile | null>;
|
|
29
|
+
/**
|
|
30
|
+
* Write to a plan file
|
|
31
|
+
*/
|
|
32
|
+
export declare function writePlanFile(filePath: string, content: string): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* List all plan files in the project
|
|
35
|
+
*/
|
|
36
|
+
export declare function listPlanFiles(cwd: string): Promise<PlanFile[]>;
|
|
37
|
+
/**
|
|
38
|
+
* Delete a plan file
|
|
39
|
+
*/
|
|
40
|
+
export declare function deletePlanFile(filePath: string): Promise<boolean>;
|
|
41
|
+
/**
|
|
42
|
+
* Extract files to change from plan content
|
|
43
|
+
*/
|
|
44
|
+
export declare function parseFilesToChange(content: string): Array<{
|
|
45
|
+
path: string;
|
|
46
|
+
action: 'create' | 'modify' | 'delete';
|
|
47
|
+
}>;
|
|
48
|
+
/**
|
|
49
|
+
* Extract pre-approved permissions from plan content
|
|
50
|
+
*/
|
|
51
|
+
export declare function parsePreApprovedPermissions(content: string): Array<{
|
|
52
|
+
tool: 'Bash';
|
|
53
|
+
prompt: string;
|
|
54
|
+
}>;
|
|
55
|
+
/**
|
|
56
|
+
* Get relative path for display
|
|
57
|
+
*/
|
|
58
|
+
export declare function getDisplayPath(fullPath: string, cwd: string): string;
|
|
59
|
+
//# sourceMappingURL=plan-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-file.d.ts","sourceRoot":"","sources":["../../src/planning/plan-file.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAmD3C;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAIrE;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQjE;AAMD;;GAEG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,QAAQ,CAAC,CA0CnB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAc7E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQpF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CA4BpE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOvE;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,GACd,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;CAAE,CAAC,CAuCjE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA4BpG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAapE"}
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plan File Utilities
|
|
3
|
+
*
|
|
4
|
+
* Manages plan files stored in .gencode/plans/ directory.
|
|
5
|
+
* Generates unique filenames with timestamps and slugs.
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from 'fs/promises';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import { existsSync } from 'fs';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Constants
|
|
12
|
+
// ============================================================================
|
|
13
|
+
const PLANS_DIR = '.gencode/plans';
|
|
14
|
+
const PLAN_FILE_EXTENSION = '.md';
|
|
15
|
+
// Word lists for generating memorable names (like Claude Code)
|
|
16
|
+
const ADJECTIVES = [
|
|
17
|
+
'agile', 'bold', 'calm', 'deft', 'eager', 'fair', 'glad', 'humble',
|
|
18
|
+
'ideal', 'jolly', 'keen', 'lively', 'merry', 'noble', 'polite', 'quiet',
|
|
19
|
+
'rapid', 'smart', 'tidy', 'unique', 'vivid', 'warm', 'zealous', 'bright',
|
|
20
|
+
'clear', 'crisp', 'fresh', 'golden', 'happy', 'lovely', 'neat', 'proud',
|
|
21
|
+
];
|
|
22
|
+
const NOUNS = [
|
|
23
|
+
'alpine', 'beacon', 'cipher', 'delta', 'ember', 'falcon', 'glacier', 'harbor',
|
|
24
|
+
'island', 'jasper', 'kayak', 'lantern', 'marble', 'nebula', 'oracle', 'prism',
|
|
25
|
+
'quartz', 'rapids', 'summit', 'timber', 'unity', 'vertex', 'willow', 'zenith',
|
|
26
|
+
'arrow', 'bridge', 'canyon', 'dawn', 'echo', 'forest', 'grove', 'hollow',
|
|
27
|
+
];
|
|
28
|
+
// ============================================================================
|
|
29
|
+
// Name Generation
|
|
30
|
+
// ============================================================================
|
|
31
|
+
/**
|
|
32
|
+
* Generate a memorable plan name (adjective-noun)
|
|
33
|
+
* Example: "agile-beacon", "bold-cipher"
|
|
34
|
+
*/
|
|
35
|
+
function generateMemorableName() {
|
|
36
|
+
const adjective = ADJECTIVES[Math.floor(Math.random() * ADJECTIVES.length)];
|
|
37
|
+
const noun = NOUNS[Math.floor(Math.random() * NOUNS.length)];
|
|
38
|
+
return `${adjective}-${noun}`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Generate a slug from text (for task-specific naming)
|
|
42
|
+
*/
|
|
43
|
+
function generateSlug(text) {
|
|
44
|
+
return text
|
|
45
|
+
.toLowerCase()
|
|
46
|
+
.replace(/[^a-z0-9\s-]/g, '') // Remove special chars
|
|
47
|
+
.replace(/\s+/g, '-') // Replace spaces with dashes
|
|
48
|
+
.replace(/-+/g, '-') // Collapse multiple dashes
|
|
49
|
+
.slice(0, 30) // Limit length
|
|
50
|
+
.replace(/^-|-$/g, ''); // Trim dashes from ends
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Generate plan file name
|
|
54
|
+
* Format: <memorable-name>.md (like Claude Code)
|
|
55
|
+
*/
|
|
56
|
+
export function generatePlanFileName(taskDescription) {
|
|
57
|
+
// Use memorable name like Claude Code (melodic-humming-lampson)
|
|
58
|
+
const name = generateMemorableName();
|
|
59
|
+
return `${name}${PLAN_FILE_EXTENSION}`;
|
|
60
|
+
}
|
|
61
|
+
// ============================================================================
|
|
62
|
+
// Directory Management
|
|
63
|
+
// ============================================================================
|
|
64
|
+
/**
|
|
65
|
+
* Get the plans directory path for a project
|
|
66
|
+
*/
|
|
67
|
+
export function getPlansDir(cwd) {
|
|
68
|
+
return path.join(cwd, PLANS_DIR);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Ensure the plans directory exists
|
|
72
|
+
*/
|
|
73
|
+
export async function ensurePlansDir(cwd) {
|
|
74
|
+
const plansDir = getPlansDir(cwd);
|
|
75
|
+
if (!existsSync(plansDir)) {
|
|
76
|
+
await fs.mkdir(plansDir, { recursive: true });
|
|
77
|
+
}
|
|
78
|
+
return plansDir;
|
|
79
|
+
}
|
|
80
|
+
// ============================================================================
|
|
81
|
+
// Plan File Operations
|
|
82
|
+
// ============================================================================
|
|
83
|
+
/**
|
|
84
|
+
* Create a new plan file
|
|
85
|
+
*/
|
|
86
|
+
export async function createPlanFile(cwd, taskDescription) {
|
|
87
|
+
const plansDir = await ensurePlansDir(cwd);
|
|
88
|
+
const fileName = generatePlanFileName(taskDescription);
|
|
89
|
+
const filePath = path.join(plansDir, fileName);
|
|
90
|
+
// Initial plan template
|
|
91
|
+
const initialContent = `# Implementation Plan
|
|
92
|
+
|
|
93
|
+
## Task
|
|
94
|
+
${taskDescription || 'Describe the task here...'}
|
|
95
|
+
|
|
96
|
+
## Analysis
|
|
97
|
+
_Understanding the codebase and requirements..._
|
|
98
|
+
|
|
99
|
+
## Approach
|
|
100
|
+
_Design decisions and implementation strategy..._
|
|
101
|
+
|
|
102
|
+
## Files to Change
|
|
103
|
+
- [ ] File 1 (action)
|
|
104
|
+
- [ ] File 2 (action)
|
|
105
|
+
|
|
106
|
+
## Steps
|
|
107
|
+
1. Step 1
|
|
108
|
+
2. Step 2
|
|
109
|
+
3. Step 3
|
|
110
|
+
|
|
111
|
+
## Pre-approved Permissions
|
|
112
|
+
_Commands that will be allowed during execution..._
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
_Generated by GenCode Plan Mode_
|
|
116
|
+
`;
|
|
117
|
+
const now = new Date();
|
|
118
|
+
await fs.writeFile(filePath, initialContent, 'utf-8');
|
|
119
|
+
return {
|
|
120
|
+
path: filePath,
|
|
121
|
+
content: initialContent,
|
|
122
|
+
createdAt: now,
|
|
123
|
+
updatedAt: now,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Read a plan file
|
|
128
|
+
*/
|
|
129
|
+
export async function readPlanFile(filePath) {
|
|
130
|
+
try {
|
|
131
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
132
|
+
const stats = await fs.stat(filePath);
|
|
133
|
+
return {
|
|
134
|
+
path: filePath,
|
|
135
|
+
content,
|
|
136
|
+
createdAt: stats.birthtime,
|
|
137
|
+
updatedAt: stats.mtime,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Write to a plan file
|
|
146
|
+
*/
|
|
147
|
+
export async function writePlanFile(filePath, content) {
|
|
148
|
+
// Ensure directory exists
|
|
149
|
+
const dir = path.dirname(filePath);
|
|
150
|
+
if (!existsSync(dir)) {
|
|
151
|
+
await fs.mkdir(dir, { recursive: true });
|
|
152
|
+
}
|
|
153
|
+
await fs.writeFile(filePath, content, 'utf-8');
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* List all plan files in the project
|
|
157
|
+
*/
|
|
158
|
+
export async function listPlanFiles(cwd) {
|
|
159
|
+
const plansDir = getPlansDir(cwd);
|
|
160
|
+
if (!existsSync(plansDir)) {
|
|
161
|
+
return [];
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const files = await fs.readdir(plansDir);
|
|
165
|
+
const planFiles = [];
|
|
166
|
+
for (const file of files) {
|
|
167
|
+
if (file.endsWith(PLAN_FILE_EXTENSION)) {
|
|
168
|
+
const filePath = path.join(plansDir, file);
|
|
169
|
+
const planFile = await readPlanFile(filePath);
|
|
170
|
+
if (planFile) {
|
|
171
|
+
planFiles.push(planFile);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Sort by updated time, newest first
|
|
176
|
+
planFiles.sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime());
|
|
177
|
+
return planFiles;
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
return [];
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Delete a plan file
|
|
185
|
+
*/
|
|
186
|
+
export async function deletePlanFile(filePath) {
|
|
187
|
+
try {
|
|
188
|
+
await fs.unlink(filePath);
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// ============================================================================
|
|
196
|
+
// Plan Content Parsing
|
|
197
|
+
// ============================================================================
|
|
198
|
+
/**
|
|
199
|
+
* Extract files to change from plan content
|
|
200
|
+
*/
|
|
201
|
+
export function parseFilesToChange(content) {
|
|
202
|
+
const files = [];
|
|
203
|
+
// Look for patterns like:
|
|
204
|
+
// - [ ] src/file.ts (create)
|
|
205
|
+
// - [x] src/file.ts (modify)
|
|
206
|
+
// + src/file.ts (create)
|
|
207
|
+
// ~ src/file.ts (modify)
|
|
208
|
+
// - src/file.ts (delete)
|
|
209
|
+
const lines = content.split('\n');
|
|
210
|
+
for (const line of lines) {
|
|
211
|
+
// Checkbox format
|
|
212
|
+
let match = line.match(/^[-*]\s*\[[ x]\]\s+([^\s(]+)\s*\((\w+)\)/);
|
|
213
|
+
if (match) {
|
|
214
|
+
const [, filePath, action] = match;
|
|
215
|
+
if (action === 'create' || action === 'modify' || action === 'delete') {
|
|
216
|
+
files.push({ path: filePath, action });
|
|
217
|
+
}
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
// Symbol format (+, ~, -)
|
|
221
|
+
match = line.match(/^\s*([+~-])\s+([^\s(]+)(?:\s*\((\w+)\))?/);
|
|
222
|
+
if (match) {
|
|
223
|
+
const [, symbol, filePath, explicitAction] = match;
|
|
224
|
+
let action;
|
|
225
|
+
if (explicitAction === 'create' || explicitAction === 'modify' || explicitAction === 'delete') {
|
|
226
|
+
action = explicitAction;
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
action = symbol === '+' ? 'create' : symbol === '~' ? 'modify' : 'delete';
|
|
230
|
+
}
|
|
231
|
+
files.push({ path: filePath, action });
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return files;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Extract pre-approved permissions from plan content
|
|
238
|
+
*/
|
|
239
|
+
export function parsePreApprovedPermissions(content) {
|
|
240
|
+
const permissions = [];
|
|
241
|
+
// Look for patterns like:
|
|
242
|
+
// - Bash: run tests
|
|
243
|
+
// - npm test
|
|
244
|
+
// - npm install
|
|
245
|
+
const permissionSection = content.match(/## Pre-approved Permissions[\s\S]*?(?=##|$)/i);
|
|
246
|
+
if (!permissionSection) {
|
|
247
|
+
return permissions;
|
|
248
|
+
}
|
|
249
|
+
const lines = permissionSection[0].split('\n');
|
|
250
|
+
for (const line of lines) {
|
|
251
|
+
// Skip header and empty lines
|
|
252
|
+
if (line.startsWith('##') || line.startsWith('_') || !line.trim()) {
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
// Match "- Bash: description" or "- description"
|
|
256
|
+
const match = line.match(/^[-*]\s+(?:Bash:\s+)?(.+)/);
|
|
257
|
+
if (match) {
|
|
258
|
+
permissions.push({ tool: 'Bash', prompt: match[1].trim() });
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return permissions;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get relative path for display
|
|
265
|
+
*/
|
|
266
|
+
export function getDisplayPath(fullPath, cwd) {
|
|
267
|
+
const relativePath = path.relative(cwd, fullPath);
|
|
268
|
+
const home = process.env.HOME || '';
|
|
269
|
+
if (relativePath.startsWith('..')) {
|
|
270
|
+
// Path is outside cwd, try home-relative
|
|
271
|
+
if (fullPath.startsWith(home)) {
|
|
272
|
+
return '~' + fullPath.slice(home.length);
|
|
273
|
+
}
|
|
274
|
+
return fullPath;
|
|
275
|
+
}
|
|
276
|
+
return relativePath;
|
|
277
|
+
}
|
|
278
|
+
//# sourceMappingURL=plan-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-file.js","sourceRoot":"","sources":["../../src/planning/plan-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plan Mode State Management
|
|
3
|
+
*
|
|
4
|
+
* Singleton state manager for plan mode. Tracks whether plan mode
|
|
5
|
+
* is active, current phase, and manages tool filtering.
|
|
6
|
+
*/
|
|
7
|
+
import type { PlanModeState, PlanPhase, AllowedPrompt, ModeType, PlanModeEvent } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Plan Mode State Manager
|
|
10
|
+
*
|
|
11
|
+
* Manages the plan mode state and provides methods for:
|
|
12
|
+
* - Entering/exiting plan mode
|
|
13
|
+
* - Phase transitions
|
|
14
|
+
* - Tool filtering
|
|
15
|
+
* - Event notifications
|
|
16
|
+
*/
|
|
17
|
+
export declare class PlanModeManager {
|
|
18
|
+
private state;
|
|
19
|
+
private eventListeners;
|
|
20
|
+
constructor();
|
|
21
|
+
/**
|
|
22
|
+
* Get initial state
|
|
23
|
+
*/
|
|
24
|
+
private getInitialState;
|
|
25
|
+
/**
|
|
26
|
+
* Get current state (readonly)
|
|
27
|
+
*/
|
|
28
|
+
getState(): Readonly<PlanModeState>;
|
|
29
|
+
/**
|
|
30
|
+
* Check if plan mode is active
|
|
31
|
+
*/
|
|
32
|
+
isActive(): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Get current mode type for UI
|
|
35
|
+
* Note: Returns 'plan' or 'normal'. 'accept' mode is managed at the App level.
|
|
36
|
+
*/
|
|
37
|
+
getCurrentMode(): ModeType;
|
|
38
|
+
/**
|
|
39
|
+
* Enter plan mode
|
|
40
|
+
*/
|
|
41
|
+
enter(planFilePath: string, originalRequest?: string): void;
|
|
42
|
+
/**
|
|
43
|
+
* Exit plan mode
|
|
44
|
+
*/
|
|
45
|
+
exit(approved?: boolean): void;
|
|
46
|
+
/**
|
|
47
|
+
* Toggle plan mode (for Shift+Tab)
|
|
48
|
+
*/
|
|
49
|
+
toggle(planFilePath?: string): void;
|
|
50
|
+
/**
|
|
51
|
+
* Update phase
|
|
52
|
+
*/
|
|
53
|
+
setPhase(phase: PlanPhase): void;
|
|
54
|
+
/**
|
|
55
|
+
* Get current phase
|
|
56
|
+
*/
|
|
57
|
+
getPhase(): PlanPhase;
|
|
58
|
+
/**
|
|
59
|
+
* Set requested permissions (from ExitPlanMode)
|
|
60
|
+
*/
|
|
61
|
+
setRequestedPermissions(permissions: AllowedPrompt[]): void;
|
|
62
|
+
/**
|
|
63
|
+
* Get requested permissions
|
|
64
|
+
*/
|
|
65
|
+
getRequestedPermissions(): AllowedPrompt[];
|
|
66
|
+
/**
|
|
67
|
+
* Get plan file path
|
|
68
|
+
*/
|
|
69
|
+
getPlanFilePath(): string | null;
|
|
70
|
+
/**
|
|
71
|
+
* Check if a tool is allowed in the current mode
|
|
72
|
+
*/
|
|
73
|
+
isToolAllowed(toolName: string): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Check if a tool is blocked in the current mode
|
|
76
|
+
*/
|
|
77
|
+
isToolBlocked(toolName: string): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Get list of allowed tools for current mode
|
|
80
|
+
*/
|
|
81
|
+
getAllowedTools(): string[];
|
|
82
|
+
/**
|
|
83
|
+
* Get list of blocked tools for current mode
|
|
84
|
+
*/
|
|
85
|
+
getBlockedTools(): string[];
|
|
86
|
+
/**
|
|
87
|
+
* Filter tool list based on current mode
|
|
88
|
+
*/
|
|
89
|
+
filterTools(toolNames: string[]): string[];
|
|
90
|
+
/**
|
|
91
|
+
* Subscribe to plan mode events
|
|
92
|
+
*/
|
|
93
|
+
subscribe(listener: (event: PlanModeEvent) => void): () => void;
|
|
94
|
+
/**
|
|
95
|
+
* Emit an event to all listeners
|
|
96
|
+
*/
|
|
97
|
+
private emit;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get the global plan mode manager
|
|
101
|
+
*/
|
|
102
|
+
export declare function getPlanModeManager(): PlanModeManager;
|
|
103
|
+
/**
|
|
104
|
+
* Reset the global plan mode manager (for testing)
|
|
105
|
+
*/
|
|
106
|
+
export declare function resetPlanModeManager(): void;
|
|
107
|
+
/**
|
|
108
|
+
* Check if plan mode is currently active
|
|
109
|
+
*/
|
|
110
|
+
export declare function isPlanModeActive(): boolean;
|
|
111
|
+
/**
|
|
112
|
+
* Get the current mode type
|
|
113
|
+
*/
|
|
114
|
+
export declare function getCurrentMode(): ModeType;
|
|
115
|
+
/**
|
|
116
|
+
* Enter plan mode
|
|
117
|
+
*/
|
|
118
|
+
export declare function enterPlanMode(planFilePath: string, originalRequest?: string): void;
|
|
119
|
+
/**
|
|
120
|
+
* Exit plan mode
|
|
121
|
+
*/
|
|
122
|
+
export declare function exitPlanMode(approved?: boolean): void;
|
|
123
|
+
/**
|
|
124
|
+
* Toggle plan mode
|
|
125
|
+
*/
|
|
126
|
+
export declare function togglePlanMode(planFilePath?: string): void;
|
|
127
|
+
//# sourceMappingURL=state.d.ts.map
|