@gajae-code/coding-agent 0.11.11 → 0.12.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.
Files changed (182) hide show
  1. package/CHANGELOG.md +49 -3
  2. package/dist/types/cli/read-cli.d.ts +1 -0
  3. package/dist/types/commands/deep-interview.d.ts +9 -0
  4. package/dist/types/commands/harness.d.ts +22 -0
  5. package/dist/types/commands/read.d.ts +6 -0
  6. package/dist/types/config/model-registry.d.ts +4 -0
  7. package/dist/types/config/provider-auth-health.d.ts +14 -0
  8. package/dist/types/config/provider-ranking.d.ts +59 -0
  9. package/dist/types/config/settings-schema.d.ts +29 -1
  10. package/dist/types/config/settings.d.ts +2 -0
  11. package/dist/types/extensibility/extensions/types.d.ts +22 -2
  12. package/dist/types/extensibility/shared-events.d.ts +6 -0
  13. package/dist/types/gjc-runtime/deep-interview-ambiguity.d.ts +5 -12
  14. package/dist/types/gjc-runtime/deep-interview-recorder.d.ts +17 -32
  15. package/dist/types/gjc-runtime/deep-interview-stage.d.ts +37 -0
  16. package/dist/types/gjc-runtime/deep-interview-state.d.ts +4 -135
  17. package/dist/types/gjc-runtime/gc-runtime.d.ts +1 -1
  18. package/dist/types/gjc-runtime/memory-guard-owner-claims.d.ts +47 -0
  19. package/dist/types/gjc-runtime/ralplan-runtime.d.ts +52 -1
  20. package/dist/types/gjc-runtime/state-writer.d.ts +5 -46
  21. package/dist/types/gjc-runtime/team-launch.d.ts +1 -1
  22. package/dist/types/gjc-runtime/team-runtime.d.ts +2 -1
  23. package/dist/types/gjc-runtime/team-store.d.ts +12 -0
  24. package/dist/types/gjc-runtime/team-worker-memory-guard.d.ts +92 -0
  25. package/dist/types/gjc-runtime/tmux-owner-isolation.d.ts +7 -0
  26. package/dist/types/gjc-runtime/ultragoal-receipt-freshness.d.ts +8 -0
  27. package/dist/types/gjc-runtime/workflow-manifest.d.ts +3 -5
  28. package/dist/types/internal-urls/local-root-gc.d.ts +2 -0
  29. package/dist/types/main.d.ts +1 -1
  30. package/dist/types/memories/index.d.ts +2 -0
  31. package/dist/types/modes/acp/acp-agent.d.ts +8 -0
  32. package/dist/types/modes/components/assistant-message.d.ts +3 -1
  33. package/dist/types/modes/components/irc-sidebar.d.ts +41 -0
  34. package/dist/types/modes/components/read-tool-group.d.ts +4 -4
  35. package/dist/types/modes/components/session-observer-overlay.d.ts +4 -0
  36. package/dist/types/modes/components/settings-selector.d.ts +2 -0
  37. package/dist/types/modes/components/tool-execution.d.ts +8 -0
  38. package/dist/types/modes/controllers/event-controller.d.ts +3 -0
  39. package/dist/types/modes/interactive-mode.d.ts +2 -0
  40. package/dist/types/modes/irc-observation-ledger.d.ts +17 -1
  41. package/dist/types/modes/types.d.ts +2 -0
  42. package/dist/types/modes/utils/ui-helpers.d.ts +16 -0
  43. package/dist/types/runtime-mcp/smithery-auth.d.ts +5 -0
  44. package/dist/types/sdk/broker/lifecycle.d.ts +5 -0
  45. package/dist/types/sdk/bus/control-drain-lease.d.ts +52 -0
  46. package/dist/types/sdk/bus/index.d.ts +15 -1
  47. package/dist/types/sdk/bus/kind-aware-reconciliation.d.ts +37 -0
  48. package/dist/types/sdk/bus/prompt-reconciliation.d.ts +2 -1
  49. package/dist/types/sdk/bus/reconciliation-store.d.ts +65 -0
  50. package/dist/types/sdk/host/control/operations.d.ts +1 -1
  51. package/dist/types/sdk/host/host.d.ts +2 -0
  52. package/dist/types/sdk/host/query/handlers.d.ts +5 -0
  53. package/dist/types/session/agent-session.d.ts +44 -10
  54. package/dist/types/session/memory-guard-checkpoint-participant.d.ts +69 -0
  55. package/dist/types/session/session-manager.d.ts +25 -13
  56. package/dist/types/session/streaming-output.d.ts +60 -5
  57. package/dist/types/skill-state/active-state.d.ts +0 -4
  58. package/dist/types/skill-state/workflow-hud.d.ts +3 -0
  59. package/dist/types/tools/browser/launch.d.ts +7 -0
  60. package/dist/types/tools/fetch.d.ts +17 -1
  61. package/dist/types/tools/output-meta.d.ts +21 -1
  62. package/dist/types/tools/read-internals.d.ts +12 -0
  63. package/dist/types/tools/read.d.ts +45 -1
  64. package/dist/types/tools/resource-gc.d.ts +4 -0
  65. package/dist/types/tools/tool-result.d.ts +7 -1
  66. package/package.json +9 -13
  67. package/scripts/benchmark-sticky-viewport-pr1.ts +239 -0
  68. package/scripts/capture-sticky-viewport-showcase.ts +292 -0
  69. package/scripts/generate-sdk-operation-inventory.ts +2 -0
  70. package/scripts/verify-gjc-sdk-canonicalization.ts +122 -18
  71. package/scripts/verify-sticky-viewport-showcase.ts +611 -0
  72. package/src/capability/index.ts +8 -0
  73. package/src/cli/read-cli.ts +2 -1
  74. package/src/cli.ts +1 -0
  75. package/src/commands/deep-interview.ts +29 -9
  76. package/src/commands/harness.ts +35 -12
  77. package/src/commands/read.ts +11 -2
  78. package/src/commands/team.ts +1 -1
  79. package/src/config/model-registry.ts +21 -2
  80. package/src/config/provider-auth-health.ts +42 -0
  81. package/src/config/provider-ranking.ts +119 -0
  82. package/src/config/settings-schema.ts +23 -1
  83. package/src/config/settings.ts +246 -108
  84. package/src/defaults/gjc/skills/deep-interview/SKILL.md +229 -82
  85. package/src/defaults/gjc/skills/ralplan/SKILL.md +58 -25
  86. package/src/defaults/gjc/skills/team/SKILL.md +1 -1
  87. package/src/defaults/gjc/skills/ultragoal/SKILL.md +25 -15
  88. package/src/eval/py/executor.ts +7 -2
  89. package/src/extensibility/extensions/types.ts +28 -4
  90. package/src/extensibility/shared-events.ts +5 -0
  91. package/src/gjc-runtime/deep-interview-ambiguity.ts +47 -82
  92. package/src/gjc-runtime/deep-interview-recorder.ts +227 -310
  93. package/src/gjc-runtime/deep-interview-runtime.ts +109 -270
  94. package/src/gjc-runtime/deep-interview-stage.ts +1016 -0
  95. package/src/gjc-runtime/deep-interview-state.ts +12 -943
  96. package/src/gjc-runtime/gc-render.ts +1 -0
  97. package/src/gjc-runtime/gc-runtime.ts +11 -1
  98. package/src/gjc-runtime/memory-guard-owner-claims.ts +389 -0
  99. package/src/gjc-runtime/ralplan-runtime.ts +742 -85
  100. package/src/gjc-runtime/state-runtime.ts +2 -1
  101. package/src/gjc-runtime/state-writer.ts +70 -222
  102. package/src/gjc-runtime/team-launch.ts +34 -5
  103. package/src/gjc-runtime/team-runtime.ts +970 -33
  104. package/src/gjc-runtime/team-store.ts +32 -0
  105. package/src/gjc-runtime/team-worker-memory-guard.ts +363 -0
  106. package/src/gjc-runtime/team-workers.ts +1 -0
  107. package/src/gjc-runtime/tmux-owner-isolation.ts +18 -0
  108. package/src/gjc-runtime/ultragoal-receipt-freshness.ts +20 -0
  109. package/src/gjc-runtime/ultragoal-runtime.ts +13 -7
  110. package/src/gjc-runtime/workflow-manifest.generated.json +97 -350
  111. package/src/gjc-runtime/workflow-manifest.ts +34 -179
  112. package/src/hooks/native-skill-hook.ts +17 -4
  113. package/src/hooks/skill-state.ts +1 -23
  114. package/src/internal-urls/docs-index.generated.ts +8 -9
  115. package/src/internal-urls/local-root-gc.ts +127 -0
  116. package/src/main.ts +9 -5
  117. package/src/memories/index.ts +10 -0
  118. package/src/modes/DESIGN.md +47 -0
  119. package/src/modes/acp/acp-agent.ts +43 -7
  120. package/src/modes/acp/acp-event-mapper.ts +14 -7
  121. package/src/modes/acp/acp-mode.ts +39 -3
  122. package/src/modes/components/assistant-message.ts +123 -22
  123. package/src/modes/components/irc-sidebar.ts +176 -62
  124. package/src/modes/components/model-selector.ts +61 -4
  125. package/src/modes/components/oauth-selector.ts +42 -12
  126. package/src/modes/components/read-tool-group.ts +82 -14
  127. package/src/modes/components/session-observer-overlay.ts +187 -32
  128. package/src/modes/components/settings-selector.ts +60 -18
  129. package/src/modes/components/tool-execution.ts +138 -27
  130. package/src/modes/controllers/event-controller.ts +109 -27
  131. package/src/modes/controllers/extension-ui-controller.ts +19 -2
  132. package/src/modes/controllers/input-controller.ts +18 -3
  133. package/src/modes/controllers/selector-controller.ts +83 -37
  134. package/src/modes/interactive-mode.ts +62 -3
  135. package/src/modes/irc-observation-ledger.ts +71 -15
  136. package/src/modes/runtime-init.ts +19 -2
  137. package/src/modes/types.ts +2 -0
  138. package/src/modes/utils/ui-helpers.ts +94 -1
  139. package/src/prompts/agents/architect.md +9 -1
  140. package/src/prompts/agents/critic.md +9 -0
  141. package/src/prompts/system/system-prompt.md +0 -1
  142. package/src/prompts/tools/read.md +4 -2
  143. package/src/runtime-mcp/smithery-auth.ts +17 -2
  144. package/src/runtime-mcp/smithery-connect.ts +11 -1
  145. package/src/sdk/broker/lifecycle.ts +25 -6
  146. package/src/sdk/bus/control-drain-lease.ts +104 -0
  147. package/src/sdk/bus/index.ts +341 -38
  148. package/src/sdk/bus/kind-aware-reconciliation.ts +242 -0
  149. package/src/sdk/bus/prompt-reconciliation.ts +2 -1
  150. package/src/sdk/bus/reconciliation-store.ts +224 -0
  151. package/src/sdk/host/control/dispatch.ts +5 -1
  152. package/src/sdk/host/control/operations.ts +1 -1
  153. package/src/sdk/host/host.ts +23 -1
  154. package/src/sdk/host/query/handlers.ts +55 -0
  155. package/src/sdk/mcp/server.ts +46 -18
  156. package/src/sdk/protocol/operation-inventory.generated.json +29 -0
  157. package/src/sdk/protocol/operation-registry.ts +7 -2
  158. package/src/sdk/session.ts +13 -1
  159. package/src/session/agent-session.ts +466 -50
  160. package/src/session/memory-guard-checkpoint-participant.ts +131 -0
  161. package/src/session/session-manager.ts +764 -17
  162. package/src/session/streaming-output.ts +262 -43
  163. package/src/setup/provider-onboarding.ts +19 -4
  164. package/src/skill-state/active-state.ts +0 -10
  165. package/src/skill-state/workflow-hud.ts +25 -2
  166. package/src/skill-state/workflow-mutation-guard.ts +65 -7
  167. package/src/tools/ask.ts +89 -69
  168. package/src/tools/browser/launch.ts +41 -6
  169. package/src/tools/fetch.ts +114 -23
  170. package/src/tools/output-meta.ts +176 -9
  171. package/src/tools/path-utils.ts +5 -1
  172. package/src/tools/read-internals.ts +44 -0
  173. package/src/tools/read.ts +1542 -310
  174. package/src/tools/resource-gc.ts +182 -18
  175. package/src/tools/tool-result.ts +14 -1
  176. package/src/web/search/providers/codex.ts +1 -1
  177. package/dist/types/gjc-runtime/deep-interview-draft.d.ts +0 -8
  178. package/dist/types/gjc-runtime/deep-interview-payload.d.ts +0 -41
  179. package/dist/types/gjc-runtime/deep-interview-repair.d.ts +0 -17
  180. package/src/gjc-runtime/deep-interview-draft.ts +0 -843
  181. package/src/gjc-runtime/deep-interview-payload.ts +0 -262
  182. package/src/gjc-runtime/deep-interview-repair.ts +0 -1674
@@ -1,262 +0,0 @@
1
- import {
2
- decodeDeepInterviewAnswerJson,
3
- decodeDeepInterviewRoundResultJson,
4
- decodeDeepInterviewSetupJson,
5
- decodeDeepInterviewTopologyJson,
6
- } from "./deep-interview-repair";
7
- import type { DeepInterviewRoundResultV1 } from "./deep-interview-state";
8
-
9
- export const DEEP_INTERVIEW_DRAFT_KINDS = [
10
- "initialize-context",
11
- "confirm-topology",
12
- "record-answer",
13
- "apply-round-result",
14
- ] as const;
15
-
16
- export type DeepInterviewDraftKind = (typeof DEEP_INTERVIEW_DRAFT_KINDS)[number];
17
- export type DeepInterviewDraftPayload = Record<string, unknown>;
18
- export type DraftScalarType = "string" | "id" | "text" | "score" | "number" | "safe-int" | "boolean" | "enum";
19
- export interface DraftLeafDescriptor {
20
- kind: "leaf";
21
- type: DraftScalarType;
22
- nullable?: boolean;
23
- maxBytes?: number;
24
- values?: readonly string[];
25
- optional?: boolean;
26
- dynamicMapValue?: boolean;
27
- }
28
- export interface DraftObjectDescriptor {
29
- kind: "object";
30
- fields: Record<string, DraftDescriptor>;
31
- optional?: boolean;
32
- dynamicMapValue?: boolean;
33
- dynamicValue?: DraftLeafDescriptor;
34
- }
35
- export interface DraftArrayDescriptor {
36
- kind: "array";
37
- item: DraftLeafDescriptor | DraftObjectDescriptor;
38
- maxItems: number;
39
- optional?: boolean;
40
- }
41
- export type DraftDescriptor = DraftLeafDescriptor | DraftObjectDescriptor | DraftArrayDescriptor;
42
-
43
- const string = (maxBytes: number, optional = true): DraftLeafDescriptor => ({
44
- kind: "leaf",
45
- type: "string",
46
- maxBytes,
47
- optional,
48
- });
49
- const text = (maxBytes: number, optional = true): DraftLeafDescriptor => ({
50
- kind: "leaf",
51
- type: "text",
52
- maxBytes,
53
- optional,
54
- });
55
- const id = (optional = true): DraftLeafDescriptor => ({ kind: "leaf", type: "id", maxBytes: 128, optional });
56
- const score = (optional = true): DraftLeafDescriptor => ({ kind: "leaf", type: "score", optional });
57
- const safeInt = (optional = true): DraftLeafDescriptor => ({ kind: "leaf", type: "safe-int", optional });
58
- const boolean = (optional = true): DraftLeafDescriptor => ({ kind: "leaf", type: "boolean", optional });
59
- const enumeration = (values: readonly string[], optional = true, nullable = false): DraftLeafDescriptor => ({
60
- kind: "leaf",
61
- type: "enum",
62
- values,
63
- optional,
64
- nullable,
65
- });
66
- const object = (fields: Record<string, DraftDescriptor>, optional = true): DraftObjectDescriptor => ({
67
- kind: "object",
68
- fields,
69
- optional,
70
- });
71
- const array = (
72
- item: DraftLeafDescriptor | DraftObjectDescriptor,
73
- maxItems: number,
74
- optional = true,
75
- ): DraftArrayDescriptor => ({
76
- kind: "array",
77
- item,
78
- maxItems,
79
- optional,
80
- });
81
-
82
- const DIMENSIONS = ["goal", "constraints", "criteria", "context"] as const;
83
- const dimensionScores = object(Object.fromEntries(DIMENSIONS.map(dimension => [dimension, score(false)])), false);
84
- const component = object(
85
- { id: id(false), name: string(1024), status: enumeration(["active", "deferred"]), active: boolean() },
86
- false,
87
- );
88
- const setup = object(
89
- {
90
- type: enumeration(["greenfield", "brownfield"], false),
91
- interview_id: id(),
92
- initial_idea: text(4096),
93
- initial_context_summary: text(4096),
94
- codebase_context: text(4096),
95
- challenge_modes_used: array(string(256, false), 64),
96
- threshold: score(false),
97
- threshold_source: text(4096),
98
- language: text(4096),
99
- trace: array(string(2048, false), 64),
100
- trace_summary: text(4096),
101
- },
102
- false,
103
- );
104
- const result = object(
105
- {
106
- global_scores: dimensionScores,
107
- component_updates: array(object({ component_id: id(false), scores: dimensionScores }, false), 12),
108
- targeting: object({
109
- target_component_id: id(false),
110
- target_dimension: enumeration(DIMENSIONS, false),
111
- weakest_component_id: id(false),
112
- weakest_dimension: enumeration(DIMENSIONS, false),
113
- last_targeted_component_id: { ...id(false), nullable: true },
114
- }),
115
- triggers: array(
116
- object(
117
- {
118
- kind: enumeration(["A", "B", "C", "D"], false),
119
- name: text(1024, false),
120
- status: enumeration(["active", "disputed", "unresolved"], false),
121
- component: id(false),
122
- dimension: enumeration(DIMENSIONS, false),
123
- evidence: text(4096),
124
- contradictedFactId: id(),
125
- rationale: text(4096),
126
- },
127
- false,
128
- ),
129
- 16,
130
- ),
131
- fact_ops: array(
132
- object(
133
- {
134
- op: enumeration(["add", "dispute", "supersede"], false),
135
- id: id(false),
136
- statement: text(4096),
137
- component: text(128),
138
- dimension: enumeration(DIMENSIONS),
139
- evidence: text(4096),
140
- target_id: id(),
141
- },
142
- false,
143
- ),
144
- 32,
145
- ),
146
- ontology: object({
147
- entities: array(
148
- object(
149
- {
150
- id: id(false),
151
- name: text(1024, false),
152
- type: text(1024, false),
153
- fields: array(text(1024, false), 16, false),
154
- },
155
- false,
156
- ),
157
- 32,
158
- false,
159
- ),
160
- relationships: array(
161
- object(
162
- { id: id(false), from_entity_id: id(false), to_entity_id: id(false), type: text(1024, false) },
163
- false,
164
- ),
165
- 16,
166
- false,
167
- ),
168
- reasoning: array(object({ statement: text(4096, false), evidence: text(4096) }, false), 32, false),
169
- }),
170
- bookkeeping: object({
171
- resolution: enumeration(
172
- ["auto_research_accepted", "auto_answer", "direct", "refined", "cited_confirmation"],
173
- false,
174
- ),
175
- round_ids: array(id(false), 32),
176
- counter_deltas: {
177
- kind: "object",
178
- fields: {},
179
- dynamicValue: { ...safeInt(false), dynamicMapValue: true },
180
- optional: true,
181
- },
182
- }),
183
- },
184
- false,
185
- );
186
- const DRAFT_SCHEMAS: Record<DeepInterviewDraftKind, DraftObjectDescriptor> = {
187
- "initialize-context": setup,
188
- "confirm-topology": object(
189
- { components: array(component, 64, false), deferred_components: array(id(false), 64, false) },
190
- false,
191
- ),
192
- "record-answer": object(
193
- {
194
- question: text(8192, false),
195
- answer: object(
196
- {
197
- selected_options: array(string(2048, false), 64, false),
198
- custom_input: { ...text(4096, false), nullable: true },
199
- },
200
- false,
201
- ),
202
- },
203
- false,
204
- ),
205
- "apply-round-result": result,
206
- };
207
-
208
- export function deepInterviewDraftSchema(kind: DeepInterviewDraftKind): DraftObjectDescriptor {
209
- return DRAFT_SCHEMAS[kind];
210
- }
211
-
212
- /** Shared strict payload decoders used by compatibility JSON and CLI-owned drafts. */
213
- export function decodeInitializeContextPayload(payload: unknown): Record<string, unknown> {
214
- return decodeDeepInterviewSetupJson(payload);
215
- }
216
-
217
- export function decodeConfirmTopologyPayload(payload: unknown): Record<string, unknown> {
218
- return decodeDeepInterviewTopologyJson(payload);
219
- }
220
-
221
- export function decodeRecordAnswerPayload(payload: unknown): {
222
- question: string;
223
- answer: { selected_options: string[]; custom_input: string | null };
224
- } {
225
- const input = asRecord(payload);
226
- if (Object.keys(input).some(key => key !== "question" && key !== "answer")) throw new Error("DI_INVALID_INPUT_JSON");
227
- if (typeof input.question !== "string") throw new Error("DI_INVALID_QUESTION_JSON");
228
- return { question: input.question, answer: decodeDeepInterviewAnswerJson(input.answer) };
229
- }
230
-
231
- export function decodeApplyRoundResultPayload(
232
- payload: unknown,
233
- state: Record<string, unknown>,
234
- ): DeepInterviewRoundResultV1 {
235
- return decodeDeepInterviewRoundResultJson(payload, state);
236
- }
237
-
238
- export function validateDraftPayload(
239
- kind: DeepInterviewDraftKind,
240
- payload: unknown,
241
- state: Record<string, unknown> = {},
242
- ): void {
243
- switch (kind) {
244
- case "initialize-context":
245
- decodeInitializeContextPayload(payload);
246
- return;
247
- case "confirm-topology":
248
- decodeConfirmTopologyPayload(payload);
249
- return;
250
- case "record-answer":
251
- decodeRecordAnswerPayload(payload);
252
- return;
253
- case "apply-round-result":
254
- decodeApplyRoundResultPayload(payload, state);
255
- }
256
- }
257
-
258
- function asRecord(value: unknown): Record<string, unknown> {
259
- if (!value || typeof value !== "object" || Array.isArray(value) || Object.getPrototypeOf(value) !== Object.prototype)
260
- throw new Error("DI_INVALID_INPUT_JSON");
261
- return value as Record<string, unknown>;
262
- }