zelari-code 0.6.2 → 0.7.5

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.
Files changed (95) hide show
  1. package/bin/zelari-code.js +1 -1
  2. package/dist/agents/councilApi.js +7 -7
  3. package/dist/agents/councilApi.js.map +1 -1
  4. package/dist/agents/councilDirectives.js +3 -3
  5. package/dist/agents/promoteMember.js +2 -2
  6. package/dist/agents/roles.js +50 -32
  7. package/dist/agents/roles.js.map +1 -1
  8. package/dist/agents/skills/builtin/debugging.js +4 -4
  9. package/dist/agents/skills/builtin/debugging.js.map +1 -1
  10. package/dist/agents/skills/builtin/docs.js +23 -13
  11. package/dist/agents/skills/builtin/docs.js.map +1 -1
  12. package/dist/agents/skills/builtin/git-ops.js +3 -3
  13. package/dist/agents/skills/builtin/git-ops.js.map +1 -1
  14. package/dist/agents/skills/builtin/planning.js +4 -4
  15. package/dist/agents/skills/builtin/planning.js.map +1 -1
  16. package/dist/agents/skills/builtin/refactoring.js +3 -3
  17. package/dist/agents/skills/builtin/refactoring.js.map +1 -1
  18. package/dist/agents/skills/builtin/review.js +9 -9
  19. package/dist/agents/skills/builtin/review.js.map +1 -1
  20. package/dist/agents/skills/builtin/testing.js +3 -3
  21. package/dist/agents/skills/builtin/testing.js.map +1 -1
  22. package/dist/agents/tools.js +2 -9
  23. package/dist/agents/tools.js.map +1 -1
  24. package/dist/cli/app.js +63 -29
  25. package/dist/cli/app.js.map +1 -1
  26. package/dist/cli/components/ChatStream.js +40 -126
  27. package/dist/cli/components/ChatStream.js.map +1 -1
  28. package/dist/cli/components/CollapsibleToolOutput.js +8 -26
  29. package/dist/cli/components/CollapsibleToolOutput.js.map +1 -1
  30. package/dist/cli/components/Header.js +6 -18
  31. package/dist/cli/components/Header.js.map +1 -1
  32. package/dist/cli/components/LiveRegion.js +54 -0
  33. package/dist/cli/components/LiveRegion.js.map +1 -0
  34. package/dist/cli/components/Sidebar.js +33 -31
  35. package/dist/cli/components/Sidebar.js.map +1 -1
  36. package/dist/cli/components/StatusBar.js +42 -0
  37. package/dist/cli/components/StatusBar.js.map +1 -0
  38. package/dist/cli/components/ToolOutput.js +68 -0
  39. package/dist/cli/components/ToolOutput.js.map +1 -0
  40. package/dist/cli/components/toolFormat.js +195 -0
  41. package/dist/cli/components/toolFormat.js.map +1 -0
  42. package/dist/cli/grokOAuth.js +93 -75
  43. package/dist/cli/grokOAuth.js.map +1 -1
  44. package/dist/cli/hooks/chatState.js +139 -0
  45. package/dist/cli/hooks/chatState.js.map +1 -0
  46. package/dist/cli/hooks/eventsToMessages.js +1 -1
  47. package/dist/cli/hooks/eventsToMessages.js.map +1 -1
  48. package/dist/cli/hooks/messageHelpers.js +11 -4
  49. package/dist/cli/hooks/messageHelpers.js.map +1 -1
  50. package/dist/cli/hooks/useBatchedMessages.js +14 -10
  51. package/dist/cli/hooks/useBatchedMessages.js.map +1 -1
  52. package/dist/cli/hooks/useChatTurn.js +400 -87
  53. package/dist/cli/hooks/useChatTurn.js.map +1 -1
  54. package/dist/cli/hooks/useSession.js +23 -11
  55. package/dist/cli/hooks/useSession.js.map +1 -1
  56. package/dist/cli/hooks/useSlashDispatch.js +9 -1
  57. package/dist/cli/hooks/useSlashDispatch.js.map +1 -1
  58. package/dist/cli/main.bundled.js +16972 -15277
  59. package/dist/cli/main.bundled.js.map +4 -4
  60. package/dist/cli/main.js +35 -1
  61. package/dist/cli/main.js.map +1 -1
  62. package/dist/cli/mcp/mcpClient.js +152 -0
  63. package/dist/cli/mcp/mcpClient.js.map +1 -0
  64. package/dist/cli/mcp/mcpManager.js +139 -0
  65. package/dist/cli/mcp/mcpManager.js.map +1 -0
  66. package/dist/cli/refreshRegistry.js +9 -6
  67. package/dist/cli/refreshRegistry.js.map +1 -1
  68. package/dist/cli/skillsMd.js +155 -0
  69. package/dist/cli/skillsMd.js.map +1 -0
  70. package/dist/cli/slashHandlers/skills.js +16 -0
  71. package/dist/cli/slashHandlers/skills.js.map +1 -1
  72. package/dist/cli/toolRegistry.js +31 -0
  73. package/dist/cli/toolRegistry.js.map +1 -1
  74. package/dist/cli/wizard/index.js +1 -1
  75. package/dist/cli/workspace/paths.js +20 -13
  76. package/dist/cli/workspace/paths.js.map +1 -1
  77. package/dist/cli/workspace/storage.js +7 -3
  78. package/dist/cli/workspace/storage.js.map +1 -1
  79. package/dist/cli/workspace/stubs.js +122 -44
  80. package/dist/cli/workspace/stubs.js.map +1 -1
  81. package/dist/cli/workspace/workspaceSummary.js +255 -0
  82. package/dist/cli/workspace/workspaceSummary.js.map +1 -0
  83. package/dist/main/core/AgentHarness.js +36 -7
  84. package/dist/main/core/AgentHarness.js.map +1 -1
  85. package/dist/main/core/tools/builtin/listFiles.js +43 -5
  86. package/dist/main/core/tools/builtin/listFiles.js.map +1 -1
  87. package/dist/main/core/tools/builtin/search.js +28 -120
  88. package/dist/main/core/tools/builtin/search.js.map +1 -1
  89. package/package.json +2 -2
  90. package/dist/cli/oauthCallbackServer.js +0 -207
  91. package/dist/cli/oauthCallbackServer.js.map +0 -1
  92. package/dist/main/core/tools/builtin/_walk.js +0 -129
  93. package/dist/main/core/tools/builtin/_walk.js.map +0 -1
  94. package/dist/main/core/tools/builtin/diff.js +0 -477
  95. package/dist/main/core/tools/builtin/diff.js.map +0 -1
@@ -19,7 +19,7 @@ const extractReusable = {
19
19
  name: 'Extract Reusable Module',
20
20
  description: 'Find duplication across files via semantic search. Identify shared logic, propose a new reusable module with a clean API, plan the migration of all call sites.',
21
21
  category: 'refactor',
22
- requiredRoles: ['pluton', 'minos'],
22
+ requiredRoles: ['atlas', 'oracle'],
23
23
  requiredTools: ['searchRAG'],
24
24
  estimatedCost: 'medium',
25
25
  enabledByDefault: true,
@@ -103,7 +103,7 @@ const simplifyConditionals = {
103
103
  name: 'Simplify Conditionals',
104
104
  description: 'Reduce cyclomatic complexity of boolean/conditional code. Extract guard clauses, replace nested if-else with lookup tables, simplify boolean expressions using De Morgan\'s laws.',
105
105
  category: 'refactor',
106
- requiredRoles: ['pluton'],
106
+ requiredRoles: ['atlas'],
107
107
  requiredTools: [],
108
108
  estimatedCost: 'low',
109
109
  enabledByDefault: true,
@@ -179,7 +179,7 @@ const refactorMonolith = {
179
179
  name: 'Refactor Monolith',
180
180
  description: 'Multi-perspective decomposition of large files (>1000 LOC) into focused modules. Identifies natural responsibility boundaries, proposes a module map with line numbers, validates no circular deps, generates a per-phase migration plan.',
181
181
  category: 'refactor',
182
- requiredRoles: ['geryon', 'pluton', 'minos'],
182
+ requiredRoles: ['hephaestus', 'atlas', 'oracle'],
183
183
  requiredTools: ['searchRAG', 'createTask'],
184
184
  estimatedCost: 'high',
185
185
  enabledByDefault: true,
@@ -1 +1 @@
1
- {"version":3,"file":"refactoring.js","sourceRoot":"","sources":["../../../../src/agents/skills/builtin/refactoring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"refactoring.js","sourceRoot":"","sources":["../../../../src/agents/skills/builtin/refactoring.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ const securityAudit = {
19
19
  name: 'Security Audit',
20
20
  description: 'OWASP Top 10 + CVE check on dependencies + secrets scan. Identifies injection vectors, auth flaws, unsafe deserialization, hardcoded credentials.',
21
21
  category: 'review',
22
- requiredRoles: ['minos'],
22
+ requiredRoles: ['oracle'],
23
23
  requiredTools: ['grep_content', 'read_file'],
24
24
  estimatedCost: 'medium',
25
25
  enabledByDefault: true,
@@ -96,7 +96,7 @@ const performanceReview = {
96
96
  name: 'Performance Review',
97
97
  description: 'Identify algorithmic complexity issues (O(n²), O(n³)), N+1 queries, unnecessary allocations, missing caching opportunities, I/O blocking patterns.',
98
98
  category: 'review',
99
- requiredRoles: ['pluton'],
99
+ requiredRoles: ['atlas'],
100
100
  requiredTools: ['read_file', 'grep_content'],
101
101
  estimatedCost: 'medium',
102
102
  enabledByDefault: true,
@@ -161,7 +161,7 @@ const testCoverageAnalysis = {
161
161
  name: 'Test Coverage Analysis',
162
162
  description: 'Identify untested code branches. Suggest specific test cases that would close the coverage gap, prioritizing edge cases and error paths.',
163
163
  category: 'review',
164
- requiredRoles: ['minos', 'pluton'],
164
+ requiredRoles: ['oracle', 'atlas'],
165
165
  requiredTools: ['read_file'],
166
166
  estimatedCost: 'medium',
167
167
  enabledByDefault: true,
@@ -226,9 +226,9 @@ const codeReview = {
226
226
  id: 'code-review',
227
227
  version: '1.0.0',
228
228
  name: 'Code Review',
229
- description: 'Multi-role review covering correctness, style, performance, security, and accessibility. Each role emits findings with severity (CRITICAL/HIGH/MEDIUM/LOW). Lucifero synthesizes consensus.',
229
+ description: 'Multi-role review covering correctness, style, performance, security, and accessibility. Each role emits findings with severity (CRITICAL/HIGH/MEDIUM/LOW). Chairman synthesizes consensus.',
230
230
  category: 'review',
231
- requiredRoles: ['minos', 'pluton', 'lucifer'],
231
+ requiredRoles: ['oracle', 'atlas', 'chairman'],
232
232
  requiredTools: ['read_file', 'grep_content', 'searchRAG'],
233
233
  estimatedCost: 'high',
234
234
  enabledByDefault: true,
@@ -254,10 +254,10 @@ const codeReview = {
254
254
  input: 'Review src/components/AuthForm.tsx (180 LOC) — adds passwordless email login',
255
255
  output: {
256
256
  findings: [
257
- { role: 'minos', severity: 'CRITICAL', line: 67, issue: 'No CSRF token on the form submit', file: 'src/components/AuthForm.tsx' },
258
- { role: 'pluton', severity: 'HIGH', line: 23, issue: 'N+1 query: user lookup fires on every keystroke instead of debounced', file: 'src/components/AuthForm.tsx' },
259
- { role: 'minos', severity: 'MEDIUM', line: 102, issue: 'Error message leaks server response body (XSS risk)', file: 'src/components/AuthForm.tsx' },
260
- { role: 'lucifer', severity: 'LOW', line: 45, issue: 'Variable name `usrEml` should be `userEmail` (style)', file: 'src/components/AuthForm.tsx' },
257
+ { role: 'oracle', severity: 'CRITICAL', line: 67, issue: 'No CSRF token on the form submit', file: 'src/components/AuthForm.tsx' },
258
+ { role: 'atlas', severity: 'HIGH', line: 23, issue: 'N+1 query: user lookup fires on every keystroke instead of debounced', file: 'src/components/AuthForm.tsx' },
259
+ { role: 'oracle', severity: 'MEDIUM', line: 102, issue: 'Error message leaks server response body (XSS risk)', file: 'src/components/AuthForm.tsx' },
260
+ { role: 'chairman', severity: 'LOW', line: 45, issue: 'Variable name `usrEml` should be `userEmail` (style)', file: 'src/components/AuthForm.tsx' },
261
261
  ],
262
262
  consensus: '2 CRITICAL/HIGH blockers must be fixed before merge. CSRF is the most critical. After CSRF fix, N+1 query, then error message.',
263
263
  mergeVerdict: 'BLOCK',
@@ -1 +1 @@
1
- {"version":3,"file":"review.js","sourceRoot":"","sources":["../../../../src/agents/skills/builtin/review.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAEhD,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;kFAamD,CAAC;AAEnF,MAAM,aAAa,GAA0B;IAC3C,EAAE,EAAE,gBAAgB;IACpB,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,mJAAmJ;IAChK,QAAQ,EAAE,QAAQ;IAClB,aAAa,EAAE,CAAC,OAAO,CAAC;IACxB,aAAa,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;IAC5C,aAAa,EAAE,QAAQ;IACvB,gBAAgB,EAAE,IAAI;IACtB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE;QACR,yEAAyE;QACzE,mCAAmC;QACnC,6CAA6C;QAC7C,4BAA4B;QAC5B,qEAAqE;KACtE;IACD,YAAY,EAAE;QACZ,uDAAuD;QACvD,uCAAuC;QACvC,2DAA2D;KAC5D;IACD,QAAQ,EAAE,EAAE;IACZ,aAAa,EAAE,CAAC,aAAa,CAAC;IAC9B,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC;IACpE,QAAQ,EAAE;QACR;YACE,KAAK,EAAE,+CAA+C;YACtD,MAAM,EAAE;gBACN,aAAa,EAAE;oBACb,EAAE,QAAQ,EAAE,gCAAgC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,2FAA2F,EAAE;oBACvM,EAAE,QAAQ,EAAE,iCAAiC,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,8FAA8F,EAAE;oBAC1M,EAAE,QAAQ,EAAE,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,yEAAyE,EAAE;iBACvK;gBACD,QAAQ,EAAE,8GAA8G;gBACxH,WAAW,EAAE,iEAAiE;gBAC9E,aAAa,EAAE;oBACb,oCAAoC;oBACpC,qCAAqC;oBACrC,+BAA+B;oBAC/B,kCAAkC;iBACnC;aACF;SACF;KACF;IACD,YAAY,EAAE,6KAA6K;IAC3L,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBA4BD,sBAAsB,EAAE;CAC9C,CAAC;AAEF,MAAM,iBAAiB,GAA0B;IAC/C,EAAE,EAAE,oBAAoB;IACxB,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,oJAAoJ;IACjK,QAAQ,EAAE,QAAQ;IAClB,aAAa,EAAE,CAAC,QAAQ,CAAC;IACzB,aAAa,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC;IAC5C,aAAa,EAAE,QAAQ;IACvB,gBAAgB,EAAE,IAAI;IACtB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE;QACR,0CAA0C;QAC1C,gDAAgD;QAChD,oCAAoC;QACpC,0CAA0C;QAC1C,uCAAuC;KACxC;IACD,YAAY,EAAE;QACZ,2CAA2C;QAC3C,wDAAwD;QACxD,+CAA+C;KAChD;IACD,QAAQ,EAAE,EAAE;IACZ,aAAa,EAAE,CAAC,aAAa,CAAC;IAC9B,IAAI,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC;IAChF,QAAQ,EAAE;QACR;YACE,KAAK,EAAE,qDAAqD;YAC5D,MAAM,EAAE;gBACN,QAAQ,EAAE;oBACR,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,qGAAqG,EAAE,GAAG,EAAE,wEAAwE,EAAE;oBAClQ,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,mFAAmF,EAAE,GAAG,EAAE,6CAA6C,EAAE;oBACpO,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,+GAA+G,EAAE,GAAG,EAAE,iEAAiE,EAAE;oBAC3Q,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,2EAA2E,EAAE,GAAG,EAAE,6CAA6C,EAAE;iBACvN;gBACD,IAAI,EAAE,2DAA2D;gBACjE,eAAe,EAAE,6BAA6B;aAC/C;SACF;KACF;IACD,YAAY,EAAE,wJAAwJ;IACtK,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;;;uBAqBD,sBAAsB,EAAE;CAC9C,CAAC;AAEF,MAAM,oBAAoB,GAA0B;IAClD,EAAE,EAAE,wBAAwB;IAC5B,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,0IAA0I;IACvJ,QAAQ,EAAE,QAAQ;IAClB,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;IAClC,aAAa,EAAE,CAAC,WAAW,CAAC;IAC5B,aAAa,EAAE,QAAQ;IACvB,gBAAgB,EAAE,IAAI;IACtB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE;QACR,2CAA2C;QAC3C,uCAAuC;QACvC,uDAAuD;QACvD,0BAA0B;QAC1B,+DAA+D;KAChE;IACD,YAAY,EAAE;QACZ,+DAA+D;QAC/D,yDAAyD;QACzD,8DAA8D;KAC/D;IACD,QAAQ,EAAE,EAAE;IACZ,aAAa,EAAE,CAAC,aAAa,CAAC;IAC9B,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC;IACrD,QAAQ,EAAE;QACR;YACE,KAAK,EAAE,mFAAmF;YAC1F,MAAM,EAAE;gBACN,gBAAgB,EAAE;oBAChB,EAAE,MAAM,EAAE,4BAA4B,EAAE,IAAI,EAAE,8BAA8B,EAAE,aAAa,EAAE,4DAA4D,EAAE;oBAC3J,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,8BAA8B,EAAE,aAAa,EAAE,sCAAsC,EAAE;oBACnH,EAAE,MAAM,EAAE,yBAAyB,EAAE,IAAI,EAAE,8BAA8B,EAAE,aAAa,EAAE,iDAAiD,EAAE;iBAC9I;gBACD,SAAS,EAAE;oBACT,0DAA0D;oBAC1D,sEAAsE;oBACtE,uDAAuD;iBACxD;gBACD,aAAa,EAAE,CAAC,2CAA2C,EAAE,mCAAmC,EAAE,0BAA0B,CAAC;aAC9H;SACF;KACF;IACD,YAAY,EAAE,kJAAkJ;IAChK,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;;uBAoBD,sBAAsB,EAAE;CAC9C,CAAC;AAEF,MAAM,UAAU,GAA0B;IACxC,EAAE,EAAE,aAAa;IACjB,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,6LAA6L;IAC1M,QAAQ,EAAE,QAAQ;IAClB,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC7C,aAAa,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,WAAW,CAAC;IACzD,aAAa,EAAE,MAAM;IACrB,gBAAgB,EAAE,IAAI;IACtB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE;QACR,oCAAoC;QACpC,mCAAmC;QACnC,+DAA+D;QAC/D,wBAAwB;QACxB,4CAA4C;KAC7C;IACD,YAAY,EAAE;QACZ,uDAAuD;QACvD,6DAA6D;QAC7D,oCAAoC;QACpC,8EAA8E;KAC/E;IACD,QAAQ,EAAE,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,wBAAwB,CAAC;IAC5E,aAAa,EAAE,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,wBAAwB,CAAC;IACjF,IAAI,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,CAAC;IACtE,QAAQ,EAAE;QACR;YACE,KAAK,EAAE,8EAA8E;YACrF,MAAM,EAAE;gBACN,QAAQ,EAAE;oBACR,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,kCAAkC,EAAE,IAAI,EAAE,6BAA6B,EAAE;oBACjI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,sEAAsE,EAAE,IAAI,EAAE,6BAA6B,EAAE;oBAClK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,qDAAqD,EAAE,IAAI,EAAE,6BAA6B,EAAE;oBACnJ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,sDAAsD,EAAE,IAAI,EAAE,6BAA6B,EAAE;iBACnJ;gBACD,SAAS,EAAE,gIAAgI;gBAC3I,YAAY,EAAE,OAAO;aACtB;SACF;KACF;IACD,YAAY,EAAE,8MAA8M;IAC5N,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;uBA0BD,sBAAsB,EAAE;CAC9C,CAAC;AAEF,kBAAkB;AAClB,MAAM,mBAAmB,GAAI,YAAwC,CAAC,UAAU,GAAG,QAAQ,GAAG,OAAO,CAA2C,CAAC;AAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;AACrL,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;AACvC,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;AAC1C,mBAAmB,CAAC,UAAU,CAAC,CAAC"}
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../../../src/agents/skills/builtin/review.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ const writeUnitTests = {
19
19
  name: 'Write Unit Tests',
20
20
  description: 'TDD-style test generation for a function or module. Output: 5-10 focused unit tests covering happy paths, edge cases (empty/null/boundary), error paths. Each test has one assertion. Uses Vitest patterns (the project standard).',
21
21
  category: 'test',
22
- requiredRoles: ['minos', 'pluton'],
22
+ requiredRoles: ['oracle', 'atlas'],
23
23
  requiredTools: ['read_file'],
24
24
  estimatedCost: 'medium',
25
25
  enabledByDefault: true,
@@ -90,7 +90,7 @@ const writeIntegrationTests = {
90
90
  name: 'Write Integration Tests',
91
91
  description: 'Generate end-to-end scenario tests that span multiple components. Tests verify the integration boundary, not individual units. Uses real subsystems (or close mocks) to catch contract mismatches.',
92
92
  category: 'test',
93
- requiredRoles: ['minos', 'geryon'],
93
+ requiredRoles: ['oracle', 'hephaestus'],
94
94
  requiredTools: ['read_file', 'grep_content'],
95
95
  estimatedCost: 'medium',
96
96
  enabledByDefault: true,
@@ -156,7 +156,7 @@ const regressionTest = {
156
156
  name: 'Regression Test',
157
157
  description: 'Convert a bug report into a permanent regression test. The test must fail on the BUGGY code (pre-fix), pass on the FIXED code (post-fix), and stay in the suite forever to prevent the bug from coming back.',
158
158
  category: 'test',
159
- requiredRoles: ['minos'],
159
+ requiredRoles: ['oracle'],
160
160
  requiredTools: ['write_file'],
161
161
  estimatedCost: 'low',
162
162
  enabledByDefault: true,
@@ -1 +1 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../../src/agents/skills/builtin/testing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../../src/agents/skills/builtin/testing.ts"],"names":[],"mappings":"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"}
@@ -133,20 +133,13 @@ function buildBuiltinRegistry() {
133
133
  let _allTools = buildBuiltinRegistry();
134
134
  let _toolByName = new Map(_allTools.map((t) => [t.name, t]));
135
135
  let _validToolNames = new Set(_toolByName.keys());
136
- /** Workspace stubs registered by the CLI (Phase 4 wiring). */
137
- let _workspaceStubs = [];
138
136
  function rebuildIndex() {
139
- _toolByName = new Map([..._allTools, ..._workspaceStubs].map((t) => [t.name, t]));
137
+ _toolByName = new Map(_allTools.map((t) => [t.name, t]));
140
138
  _validToolNames = new Set(_toolByName.keys());
141
139
  }
142
- /** Register workspace stubs (CLI-only). Replaces any previous set. */
143
- export function setWorkspaceStubs(stubs) {
144
- _workspaceStubs = stubs;
145
- rebuildIndex();
146
- }
147
140
  /** Read-only snapshot of the current registry (always a fresh array). */
148
141
  export function getAllTools() {
149
- return [..._allTools, ..._workspaceStubs];
142
+ return [..._allTools];
150
143
  }
151
144
  /** Register a custom tool (user-defined or MCP-discovered). If a tool with
152
145
  * the same name already exists, it is replaced. */
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/agents/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/agents/tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAkC5D,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,0CAA0C;QACvD,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACrB,GAAG,CAAC,OAAO,CAAC;gBACV,OAAO,EAAG,IAAI,CAAC,SAAS,CAAY,IAAI,SAAS;gBACjD,QAAQ,EAAG,IAAI,CAAC,UAAU,CAAY,IAAI,SAAS;gBACnD,KAAK,EAAG,IAAI,CAAC,OAAO,CAAY,IAAI,UAAU;gBAC9C,WAAW,EAAG,IAAI,CAAC,aAAa,CAAY,IAAI,EAAE;gBAClD,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAG,IAAI,CAAC,UAAU,CAAsB,IAAI,QAAQ;gBAC5D,IAAI,EAAG,IAAI,CAAC,MAAM,CAAc,IAAI,EAAE;gBACtC,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE,CAAE,IAAI,CAAC,UAAU,CAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAClD,CAAC,CAAS,EAAW,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CACzF;aACF,CAAC,CAAC;YACH,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,EAAG,IAAI,CAAC,OAAO,CAAY,IAAI,UAAU,CAAC,CAAC;YAC5E,OAAO,SAAS,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC;QACzD,CAAC;KACF;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACrB,GAAG,CAAC,OAAO,CAAC;gBACV,KAAK,EAAG,IAAI,CAAC,OAAO,CAAY,IAAI,UAAU;gBAC9C,OAAO,EAAG,IAAI,CAAC,SAAS,CAAY,IAAI,EAAE;gBAC1C,IAAI,EAAG,IAAI,CAAC,MAAM,CAAc,IAAI,EAAE;gBACtC,QAAQ,EAAG,IAAI,CAAC,UAAU,CAAY,IAAI,SAAS;aACpD,CAAC,CAAC;YACH,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,EAAG,IAAI,CAAC,OAAO,CAAY,IAAI,UAAU,CAAC,CAAC;YAC5E,OAAO,SAAS,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC;QACvD,CAAC;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,4BAA4B;QACzC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACrB,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAG,IAAI,CAAC,MAAM,CAAY,IAAI,WAAW;gBAC7C,WAAW,EAAG,IAAI,CAAC,aAAa,CAAY,IAAI,EAAE;gBAClD,KAAK,EAAG,IAAI,CAAC,OAAO,CAAY,IAAI,CAAC;gBACrC,KAAK,EAAG,IAAI,CAAC,OAAO,CAAY,IAAI,SAAS;gBAC7C,QAAQ,EAAE,CAAC;aACZ,CAAC,CAAC;YACH,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,eAAe,EAAG,IAAI,CAAC,MAAM,CAAY,IAAI,WAAW,CAAC,CAAC;YACrF,OAAO,UAAU,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QAC5C,CAAC;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACrB,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACjC,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;YAC5D,OAAO,8DAA8D,CAAC;QACxE,CAAC;KACF;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,4BAA4B;QACzC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACrB,GAAG,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACnC,OAAO,SAAS,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;QACtD,CAAC;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACrB,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAChC,OAAO,iBAAiB,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/D,CAAC;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,uDAAuD;QACpE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACrB,IAAI,CAAC,GAAG,CAAC,WAAW;gBAAE,OAAO,qCAAqC,CAAC;YACnE,MAAM,KAAK,GAAI,IAAI,CAAC,OAAO,CAAY,IAAI,cAAc,CAAC;YAC1D,MAAM,IAAI,GAAI,IAAI,CAAC,MAAM,CAAY,IAAI,SAAS,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,CAAC;YACpG,MAAM,OAAO,GAAI,IAAI,CAAC,SAAS,CAAY,IAAI,EAAE,CAAC;YAClD,MAAM,IAAI,GAAI,IAAI,CAAC,MAAM,CAAc,IAAI,EAAE,CAAC;YAE9C,GAAG,CAAC,WAAW,CAAC;gBACd,IAAI;gBACJ,KAAK;gBACL,OAAO;gBACP,MAAM,EAAE,UAAU;gBAClB,IAAI;gBACJ,WAAW,EAAE,EAAE;gBACf,WAAW,EAAE,GAAG,CAAC,WAAW;aAC7B,CAAC,CAAC;YACH,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO,aAAa,KAAK,iBAAiB,IAAI,IAAI,CAAC;QACrD,CAAC;KACF;CACF,CAAC;AAEF;;;;;;;;;;;GAWG;AAEH,yEAAyE;AACzE,MAAM,qBAAqB,GAA6B,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACtF,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,EAAE;IACd,OAAO,EAAE,IAAI,CAAC,OAAO;CACtB,CAAC,CAAC,CAAC;AAEJ,gDAAgD;AAChD,SAAS,oBAAoB;IAC3B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAA6B,EAAE,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,sBAAsB,EAAE,GAAG,yBAAyB,EAAE,GAAG,qBAAqB,CAAC,EAAE,CAAC;QACvG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QAClC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,IAAI,SAAS,GAA6B,oBAAoB,EAAE,CAAC;AACjE,IAAI,WAAW,GAAwC,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAClG,IAAI,eAAe,GAAgB,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;AAE/D,SAAS,YAAY;IACnB,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,eAAe,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;AACxB,CAAC;AAED;oDACoD;AACpD,MAAM,UAAU,kBAAkB,CAAC,GAA2B;IAC5D,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,GAAG,IAAI,CAAC;QAAE,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;;QAC9B,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,YAAY,EAAE,CAAC;AACjB,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACxD,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO;IACpB,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACzB,YAAY,EAAE,CAAC;AACjB,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,gBAAgB;IAC9B,SAAS,GAAG,oBAAoB,EAAE,CAAC;IACnC,YAAY,EAAE,CAAC;AACjB,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,MAAM,SAAS,GAAsC,IAAI,KAAK,CAAC,EAAE,EAAE;IACxE,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;QACrB,yFAAyF;QACzF,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;CACF,CAA6B,CAAC;AAE/B,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,IAA6B,EAC7B,OAAoB;IAEpB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,QAAQ,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,SAAS,IAAI,aAAa,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;IAC1F,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,iBAAiB,CAAC,SAAmB;IACnD,OAAO,SAAS;SACb,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACpC,MAAM,CAAC,CAAC,CAAC,EAA+B,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;AACjE,CAAC"}
package/dist/cli/app.js CHANGED
@@ -3,11 +3,11 @@
3
3
  // hook signatures and remove this annotation. The split is documented in
4
4
  // `docs/plans/2026-07-01-app-split.md`.
5
5
  import React, { useState, useMemo, useCallback } from 'react';
6
- import { Box } from 'ink';
7
- import { Header } from './components/Header.js';
8
- import { ChatStream } from './components/ChatStream.js';
6
+ import { Box, Static } from 'ink';
9
7
  import { InputBar } from './components/InputBar.js';
10
- import { Sidebar } from './components/Sidebar.js';
8
+ import { LiveRegion } from './components/LiveRegion.js';
9
+ import { StatusBar } from './components/StatusBar.js';
10
+ import { renderMessage } from './components/ChatStream.js';
11
11
  import { formatSkillList } from './slashCommands.js';
12
12
  import { listCodingSkills } from '@zelari/core/skills';
13
13
  import '@zelari/core/skills/builtin/debugging';
@@ -19,10 +19,11 @@ import '@zelari/core/skills/builtin/review';
19
19
  import '@zelari/core/skills/builtin/testing';
20
20
  import { getProviderConfig, getActiveProvider as getActiveProviderSpec, } from './providerConfig.js';
21
21
  import { SessionJsonlWriter } from '@zelari/core/harness';
22
- import { useTerminalSize } from './hooks/useTerminalSize.js';
23
22
  import { useSession } from './hooks/useSession.js';
24
23
  import { useChatTurn } from './hooks/useChatTurn.js';
25
24
  import { useSlashDispatch } from './hooks/useSlashDispatch.js';
25
+ import { useBatchedMessages } from './hooks/useBatchedMessages.js';
26
+ import { useTerminalSize } from './hooks/useTerminalSize.js';
26
27
  const MODEL = process.env.OPENAI_MODEL ?? 'grok-4';
27
28
  const PROVIDER = 'openai-compatible';
28
29
  /**
@@ -36,37 +37,48 @@ const providerDefaults = {
36
37
  'glm': 'glm-4.5',
37
38
  };
38
39
  /**
39
- * App — Ink UI shell.
40
+ * App — Ink UI shell (v0.7.0 static-scrollback layout).
40
41
  *
41
- * v0.4.2 split: the previous monolithic 2200-line app.tsx is now a thin
42
- * composition of focused hooks (see `src/cli/hooks/`):
43
- * - useTerminalSize: reactive stdout dimensions with resize coalescing
44
- * - useSession: session bootstrap + lifecycle (resume/new)
45
- * - useChatTurn: AgentHarness dispatch (single prompt + council)
46
- * - useSlashDispatch: router for every /command, delegates to handlers
47
- * in `src/cli/slashHandlers/*.ts`
42
+ * The fixed-height frame of v0.6 (root `<Box width height overflow=hidden>` +
43
+ * `pickVisibleMessages`) is gone. Finalized messages feed Ink's `<Static>`,
44
+ * which prints each item exactly once to real stdout so it becomes part of
45
+ * the terminal's native scrollback. The dynamic region Ink repaints is now
46
+ * just: the streaming tail (`<LiveRegion>`), a one-line `<StatusBar>`, and
47
+ * the `<InputBar>`. Because that region is always a few lines tall, it can
48
+ * never exceed the terminal height → no full-screen clear/repaint → no
49
+ * flicker, by construction.
48
50
  *
49
- * The App component itself only holds ephemeral UI state (input, busy,
50
- * sessionStats, providerConfig) and wires the hooks together.
51
+ * v0.4.2 split still holds: App is a thin composition of focused hooks
52
+ * (useSession, useChatTurn, useSlashDispatch).
51
53
  */
52
54
  export function App() {
53
55
  const [input, setInput] = useState('');
54
56
  const [busy, setBusy] = useState(false);
55
57
  const [providerConfig, setProviderConfig] = useState(() => getProviderConfig());
56
58
  const [sessionStats, setSessionStats] = useState({ totalTokens: 0, totalCostUsd: 0 });
59
+ // v0.7.0: bump on /clear to remount <Static> (resets its internal "already
60
+ // printed" index so the ANSI-cleared scrollback stays in sync). Also bumped
61
+ // implicitly by a sessionId change (/new).
62
+ const [clearEpoch, setClearEpoch] = useState(0);
57
63
  const activeProviderSpec = getActiveProviderSpec();
58
64
  const activeModel = providerConfig.modelByProvider[activeProviderSpec.id];
59
65
  const session = useSession();
60
66
  const size = useTerminalSize();
67
+ // Throttle layer for the `live` region — coalesces per-token streaming
68
+ // updates (~50-200/sec) into ≤60 renders/sec. The finalized array uses the
69
+ // raw setter (its appends are rare and user-facing).
70
+ const { commit: commitLive, flush: flushLive } = useBatchedMessages(session.live, session.setLive);
61
71
  const chatTurn = useChatTurn({
62
72
  sessionId: session.sessionId,
63
73
  writerRef: session.writerRef,
64
74
  setMessages: session.setMessages,
65
- commitStreaming: session.commitStreaming,
66
- flushStreaming: session.flushStreaming,
75
+ commitStreaming: commitLive,
76
+ flushStreaming: flushLive,
67
77
  setBusy,
68
78
  setSessionActive: session.setSessionActive,
69
79
  setSessionStats,
80
+ setLive: session.setLive,
81
+ liveRef: session.liveRef,
70
82
  });
71
83
  // /new callback: close the old writer, open a new one for the new id.
72
84
  const onNewSession = useCallback((id) => {
@@ -79,6 +91,12 @@ export function App() {
79
91
  void session.writerRef.current?.close();
80
92
  setTimeout(() => process.exit(0), 50);
81
93
  }, [session.writerRef]);
94
+ // /clear callback (v0.7.0): reset the live region too (pending tools /
95
+ // streaming bubble shouldn't survive a clear) and bump the Static epoch.
96
+ const onClear = useCallback(() => {
97
+ session.resetTranscript();
98
+ setClearEpoch((e) => e + 1);
99
+ }, [session]);
82
100
  const handleSubmit = useSlashDispatch({
83
101
  skills: useMemo(() => listCodingSkills(), []),
84
102
  sessionId: session.sessionId,
@@ -98,20 +116,36 @@ export function App() {
98
116
  dispatchCouncilPrompt: chatTurn.dispatchCouncilPrompt,
99
117
  onNewSession,
100
118
  onExit,
119
+ onClear,
101
120
  });
102
121
  const skills = useMemo(() => listCodingSkills(), []);
103
- const skillList = useMemo(() => formatSkillList(skills), [skills]);
104
- const isSlashMode = input.startsWith('/');
105
- // ChatStream's real box width: total minus the 40-col Sidebar. The message
106
- // height estimator subtracts its own padding/margins from this, so pass the
107
- // actual box width (the old -44 double-counted the padding).
108
- const chatWidth = Math.max(20, size.columns - 40);
109
- return (React.createElement(Box, { flexDirection: "column", width: size.columns, height: size.rows, overflow: "hidden" },
110
- React.createElement(Header, { model: activeModel, provider: activeProviderSpec.id, skillCount: skills.length, sessionActive: session.sessionActive, sessionId: session.sessionId ? session.sessionId.slice(0, 8) : '...', totalTokens: sessionStats.totalTokens, totalCostUsd: sessionStats.totalCostUsd }),
111
- React.createElement(Box, { flexDirection: "row", height: size.rows - 6, overflow: "hidden" },
112
- React.createElement(ChatStream, { messages: session.messages, height: size.rows - 6, width: chatWidth }),
113
- React.createElement(Sidebar, { skillList: skillList, sessionCount: session.messages.length, isSlashMode: isSlashMode, height: size.rows - 6 })),
114
- React.createElement(InputBar, { value: input, onChange: setInput, onSubmit: handleSubmit, disabled: busy })));
122
+ // The one-shot banner: printed once as the first Static item. Replaces the
123
+ // persistent Header. Includes the skill list summary so the user can see
124
+ // what's available without the 40-col Sidebar (which can't coexist with
125
+ // native scrollback a fixed right column would be printed into every
126
+ // scrollback line).
127
+ const banner = useMemo(() => {
128
+ const skillList = formatSkillList(skills);
129
+ return {
130
+ id: 'banner-once',
131
+ role: 'system',
132
+ ts: 0,
133
+ content: `zelari-code v0.7.3 ${activeProviderSpec.id}/${activeModel}\n` +
134
+ `${skills.length} skills available. Type /help for the list, or /skill <name>.\n` +
135
+ `── skills ──\n${skillList}`,
136
+ };
137
+ }, [skills, activeProviderSpec.id, activeModel]);
138
+ // The Static feed: banner first, then finalized messages. `key` lets /clear
139
+ // remount Static so its internal "already printed" index resets. clearEpoch
140
+ // is composed in so /clear forces a remount even within the same session.
141
+ const staticKey = `${session.sessionId || 'pre-bootstrap'}-${clearEpoch}`;
142
+ const staticItems = [banner, ...session.messages];
143
+ return (React.createElement(React.Fragment, null,
144
+ React.createElement(Static, { key: staticKey, items: staticItems }, (item) => renderMessage(item)),
145
+ React.createElement(Box, { flexDirection: "column", borderTop: true, paddingX: 1 },
146
+ React.createElement(LiveRegion, { live: session.live, busy: busy }),
147
+ React.createElement(StatusBar, { model: activeModel, provider: activeProviderSpec.id, sessionId: session.sessionId ? session.sessionId.slice(0, 8) : '...', sessionActive: session.sessionActive, totalTokens: sessionStats.totalTokens, totalCostUsd: sessionStats.totalCostUsd, queueCount: chatTurn.queueCount, busy: busy }),
148
+ React.createElement(InputBar, { value: input, onChange: setInput, onSubmit: handleSubmit, disabled: busy }))));
115
149
  }
116
150
  // Re-export so legacy imports keep working (Task v0.4.2 audit split).
117
151
  // New code should import directly from src/cli/hooks/* instead.
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/cli/app.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/cli/app.tsx"],"names":[],"mappings":"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"}
@@ -1,139 +1,53 @@
1
1
  import React from 'react';
2
2
  import { Box, Text } from 'ink';
3
- import { CollapsibleToolOutput } from './CollapsibleToolOutput.js';
3
+ import { ToolOutput } from './ToolOutput.js';
4
4
  /**
5
- * Estimate the rendered row count for a single message.
5
+ * renderMessage pure per-message renderer shared by `<Static>` (finalized
6
+ * items, printed once into native scrollback) and the live region (the
7
+ * streaming tail + pending tools, repainted by Ink).
6
8
  *
7
- * Width accounting matters here: under-estimating heights lets the transcript
8
- * grow taller than the terminal, at which point Ink falls back to clearing
9
- * and repainting the whole screen on every frame the main source of
10
- * visible flicker during streaming. The ChatStream Box has paddingX={1}
11
- * (2 cols) and each message body an extra marginLeft={2}, so text wraps at
12
- * `width - 4`, not `width`.
9
+ * v0.7.0 static-scrollback refactor: this replaces the old `ChatStream`
10
+ * component, which combined rendering with visible-message picking
11
+ * (`pickVisibleMessages` / `estimateMessageHeight`). Those are gone
12
+ * `<Static>` handles scrollback, and the live region guarantees a small
13
+ * dynamic footprint by construction. Each message renders identically
14
+ * whether it is printed once (Static) or repainted (live), so the UI is
15
+ * stable as a message crosses from live → finalized.
16
+ *
17
+ * `live` flag: when true, the tool summary shows a pending glyph and no
18
+ * duration (the invocation hasn't ended yet). Finalized tool messages
19
+ * render via the stateless `ToolOutput` policy (Phase 3).
13
20
  */
14
- function estimateMessageHeight(m, width) {
15
- const textWidth = Math.max(1, width - 4);
21
+ export function renderMessage(m, live = false) {
16
22
  if (m.role === 'tool') {
17
- // Collapsed tool output: one summary line ("[name] args (ms) ▼"),
18
- // which can wrap on narrow terminals / long arg previews.
19
- const summaryLen = m.content.length + (m.toolName?.length ?? 4) + 13;
20
- let rows = Math.max(1, Math.ceil(summaryLen / textWidth));
21
- if (m.toolOk === false && m.toolResult) {
22
- // Failed tools auto-expand: bordered body (2 border rows) + wrapped
23
- // body lines at textWidth - 6 (extra marginLeft 2 + border 2 + padding 2).
24
- const bodyWidth = Math.max(1, textWidth - 6);
25
- rows += 2;
26
- for (const line of m.toolResult.split('\n')) {
27
- rows += Math.max(1, Math.ceil(line.length / bodyWidth));
28
- }
29
- }
30
- return rows;
31
- }
32
- const lines = m.content.split('\n');
33
- let textRows = 0;
34
- for (const line of lines) {
35
- textRows += Math.max(1, Math.ceil(line.length / textWidth));
23
+ return (React.createElement(ToolOutput, { key: m.id, toolName: m.toolName ?? 'tool', summary: m.content, body: m.toolResult ?? m.content, ok: m.toolOk, durationMs: m.toolDurationMs, live: live }));
36
24
  }
37
- return 1 + textRows + 1; // header + textRows + margin-bottom
25
+ return (React.createElement(Box, { key: m.id, flexDirection: "column", marginBottom: 1 },
26
+ React.createElement(Text, { color: m.role === 'user' ? 'cyan' : m.role === 'assistant' ? 'green' : 'yellow', bold: true },
27
+ m.role === 'user' ? '❯' : m.role === 'assistant' ? '◆' : 'ℹ',
28
+ " ",
29
+ m.role,
30
+ m.role === 'assistant' && m.memberName ? (React.createElement(Text, { color: "magenta" },
31
+ " \u00B7 ",
32
+ m.memberName)) : null),
33
+ React.createElement(Box, { marginLeft: 2 },
34
+ React.createElement(Text, null, m.content))));
38
35
  }
39
- /**
40
- * Pure helper: pick which messages fit in `height`, applying a top-truncation
41
- * to the first message that overflows. Extracted so it's unit-testable and
42
- * memoizable in the component.
43
- */
44
- export function pickVisibleMessages(messages, height, width) {
45
- const visibleMessages = [];
46
- let remainingHeight = height - 1; // 1 row buffer for safety
47
- for (let i = messages.length - 1; i >= 0; i--) {
48
- const m = messages[i];
49
- const mHeight = estimateMessageHeight(m, width);
50
- if (remainingHeight - mHeight >= 0) {
51
- visibleMessages.unshift(m);
52
- remainingHeight -= mHeight;
53
- }
54
- else {
55
- // Truncate the top-most visible message if we have some space.
56
- // Tool messages: collapse the body to just the summary when
57
- // there is not enough height for the (possibly auto-expanded)
58
- // bordered body — silently dropping the tool would blank the
59
- // whole transcript. Regression HIGH-1 (v0.6.2 audit).
60
- if (m.role === 'tool') {
61
- // Tools: minimum 1 row for the summary line. Skip the
62
- // `remainingHeight > 2` guard (which was tuned for assistant
63
- // messages that need header + body + margin-bottom).
64
- const textWidth = Math.max(1, width - 4);
65
- const summaryLen = m.content.length + (m.toolName?.length ?? 4) + 13;
66
- const summaryRows = Math.max(1, Math.ceil(summaryLen / textWidth));
67
- if (summaryRows <= remainingHeight) {
68
- // Show the collapsed summary (drop the auto-expanded body
69
- // if it would push us past the available height).
70
- const { toolResult: _omit, ...collapsed } = m;
71
- void _omit;
72
- visibleMessages.unshift(collapsed);
73
- }
74
- // else: even the summary doesn't fit — fall through to break
75
- // and leave earlier visible messages in place.
76
- }
77
- else if (remainingHeight > 2) {
78
- const textWidth = Math.max(1, width - 4);
79
- const maxTextRows = remainingHeight - 2; // header + margin-bottom
80
- const lines = m.content.split('\n');
81
- const truncatedLines = [];
82
- let currentRows = 0;
83
- for (let j = lines.length - 1; j >= 0; j--) {
84
- const line = lines[j];
85
- const lineRows = Math.max(1, Math.ceil(line.length / textWidth));
86
- if (currentRows + lineRows <= maxTextRows) {
87
- truncatedLines.unshift(line);
88
- currentRows += lineRows;
89
- }
90
- else {
91
- truncatedLines.unshift('... [truncated]');
92
- break;
93
- }
94
- }
95
- visibleMessages.unshift({
96
- ...m,
97
- content: truncatedLines.join('\n'),
98
- });
99
- }
100
- break;
101
- }
102
- }
103
- return visibleMessages;
36
+ function ChatStreamImpl({ messages }) {
37
+ return (React.createElement(Box, { flexDirection: "column", flexGrow: 1, paddingX: 1 }, messages.length === 0 ? (React.createElement(Text, { dimColor: true }, "Ready. Type a prompt or /skill <name> to invoke a skill.")) : (messages.map((m) => renderMessage(m)))));
104
38
  }
39
+ export const ChatStream = React.memo(ChatStreamImpl);
40
+ // ── Backward-compat exports for tests still importing the picking helpers ──
41
+ // The v0.6.2 `pickVisibleMessages` / `estimateMessageHeight` are removed in
42
+ // v0.7.0 (the fixed frame is gone). Re-exporting shims that delegate to a
43
+ // trivial implementation keeps older test imports resolving until those tests
44
+ // are migrated. See tests/unit/v4-ui-audit.test.ts + cli-toolDisplay.test.ts.
105
45
  /**
106
- * Stateless rendering of the chat transcript. Tool messages (role === 'tool')
107
- * are rendered via CollapsibleToolOutput so each invocation can be expanded
108
- * to inspect its body (Task B.2.2).
109
- *
110
- * Performance: `visibleMessages` is computed via `React.useMemo` keyed on
111
- * [messages, height, width]. Without this, every streaming token delta from
112
- * the LLM (≈20-50/sec) would trigger:
113
- * - O(N) `estimateMessageHeight` calls per render
114
- * - O(N) `m.content.split('\n')` calls inside the truncation branch
115
- * - A new `visibleMessages` array, which causes every child to re-render
116
- *
117
- * Wrapped in React.memo so the component re-renders only when its props
118
- * actually change (messages array identity, height, width).
46
+ * @deprecated since v0.7.0 visible-message picking is removed; `<Static>`
47
+ * handles scrollback. This shim returns the input unchanged so legacy tests
48
+ * that only assert on returned message identity/content still pass.
119
49
  */
120
- function ChatStreamImpl({ messages, height, width }) {
121
- const visibleMessages = React.useMemo(() => pickVisibleMessages(messages, height, width), [messages, height, width]);
122
- return (React.createElement(Box, { flexDirection: "column", flexGrow: 1, paddingX: 1, height: height, overflow: "hidden" }, visibleMessages.length === 0 ? (React.createElement(Text, { dimColor: true }, "Ready. Type a prompt or /skill <name> to invoke a skill.")) : (visibleMessages.map((m) => {
123
- if (m.role === 'tool') {
124
- return (React.createElement(CollapsibleToolOutput, { key: m.id, toolName: m.toolName ?? 'tool', summary: m.content, body: m.toolResult ?? m.content, ok: m.toolOk, durationMs: m.toolDurationMs, defaultExpanded: m.toolOk === false && !!m.toolResult }));
125
- }
126
- return (React.createElement(Box, { key: m.id, flexDirection: "column", marginBottom: 1 },
127
- React.createElement(Text, { color: m.role === 'user' ? 'cyan' : m.role === 'assistant' ? 'green' : 'yellow', bold: true },
128
- m.role === 'user' ? '❯' : m.role === 'assistant' ? '◆' : 'ℹ',
129
- " ",
130
- m.role,
131
- m.role === 'assistant' && m.memberName ? (React.createElement(Text, { color: "magenta" },
132
- " \u00B7 ",
133
- m.memberName)) : null),
134
- React.createElement(Box, { marginLeft: 2 },
135
- React.createElement(Text, null, m.content))));
136
- }))));
50
+ export function pickVisibleMessages(messages, _height, _width) {
51
+ return [...messages];
137
52
  }
138
- export const ChatStream = React.memo(ChatStreamImpl);
139
53
  //# sourceMappingURL=ChatStream.js.map