inferoa 0.1.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 (200) hide show
  1. package/LICENSE +176 -0
  2. package/README.md +154 -0
  3. package/dist/src/app.d.ts +16 -0
  4. package/dist/src/app.js +17 -0
  5. package/dist/src/app.js.map +1 -0
  6. package/dist/src/autoresearch/state.d.ts +106 -0
  7. package/dist/src/autoresearch/state.js +469 -0
  8. package/dist/src/autoresearch/state.js.map +1 -0
  9. package/dist/src/cli.d.ts +2 -0
  10. package/dist/src/cli.js +415 -0
  11. package/dist/src/cli.js.map +1 -0
  12. package/dist/src/code-intelligence/codegraph-engine.d.ts +55 -0
  13. package/dist/src/code-intelligence/codegraph-engine.js +593 -0
  14. package/dist/src/code-intelligence/codegraph-engine.js.map +1 -0
  15. package/dist/src/code-intelligence/hub.d.ts +37 -0
  16. package/dist/src/code-intelligence/hub.js +65 -0
  17. package/dist/src/code-intelligence/hub.js.map +1 -0
  18. package/dist/src/config/config.d.ts +12 -0
  19. package/dist/src/config/config.js +229 -0
  20. package/dist/src/config/config.js.map +1 -0
  21. package/dist/src/config/defaults.d.ts +2 -0
  22. package/dist/src/config/defaults.js +44 -0
  23. package/dist/src/config/defaults.js.map +1 -0
  24. package/dist/src/config/secret-vault.d.ts +3 -0
  25. package/dist/src/config/secret-vault.js +106 -0
  26. package/dist/src/config/secret-vault.js.map +1 -0
  27. package/dist/src/context/compressor.d.ts +33 -0
  28. package/dist/src/context/compressor.js +501 -0
  29. package/dist/src/context/compressor.js.map +1 -0
  30. package/dist/src/context/prompt.d.ts +26 -0
  31. package/dist/src/context/prompt.js +572 -0
  32. package/dist/src/context/prompt.js.map +1 -0
  33. package/dist/src/daemon/serve.d.ts +2 -0
  34. package/dist/src/daemon/serve.js +11 -0
  35. package/dist/src/daemon/serve.js.map +1 -0
  36. package/dist/src/daemon/supervisor.d.ts +33 -0
  37. package/dist/src/daemon/supervisor.js +252 -0
  38. package/dist/src/daemon/supervisor.js.map +1 -0
  39. package/dist/src/goals/state.d.ts +105 -0
  40. package/dist/src/goals/state.js +736 -0
  41. package/dist/src/goals/state.js.map +1 -0
  42. package/dist/src/model/endpoint-signals.d.ts +15 -0
  43. package/dist/src/model/endpoint-signals.js +186 -0
  44. package/dist/src/model/endpoint-signals.js.map +1 -0
  45. package/dist/src/model/gateway.d.ts +11 -0
  46. package/dist/src/model/gateway.js +455 -0
  47. package/dist/src/model/gateway.js.map +1 -0
  48. package/dist/src/plans/state.d.ts +28 -0
  49. package/dist/src/plans/state.js +123 -0
  50. package/dist/src/plans/state.js.map +1 -0
  51. package/dist/src/runtime.d.ts +92 -0
  52. package/dist/src/runtime.js +757 -0
  53. package/dist/src/runtime.js.map +1 -0
  54. package/dist/src/session/store.d.ts +84 -0
  55. package/dist/src/session/store.js +593 -0
  56. package/dist/src/session/store.js.map +1 -0
  57. package/dist/src/session/workspace.d.ts +2 -0
  58. package/dist/src/session/workspace.js +14 -0
  59. package/dist/src/session/workspace.js.map +1 -0
  60. package/dist/src/skills/registry.d.ts +24 -0
  61. package/dist/src/skills/registry.js +203 -0
  62. package/dist/src/skills/registry.js.map +1 -0
  63. package/dist/src/tools/autoresearch-tools.d.ts +6 -0
  64. package/dist/src/tools/autoresearch-tools.js +412 -0
  65. package/dist/src/tools/autoresearch-tools.js.map +1 -0
  66. package/dist/src/tools/clarify-tool.d.ts +3 -0
  67. package/dist/src/tools/clarify-tool.js +107 -0
  68. package/dist/src/tools/clarify-tool.js.map +1 -0
  69. package/dist/src/tools/code-intelligence.d.ts +15 -0
  70. package/dist/src/tools/code-intelligence.js +391 -0
  71. package/dist/src/tools/code-intelligence.js.map +1 -0
  72. package/dist/src/tools/context.d.ts +11 -0
  73. package/dist/src/tools/context.js +2 -0
  74. package/dist/src/tools/context.js.map +1 -0
  75. package/dist/src/tools/goal-tools.d.ts +3 -0
  76. package/dist/src/tools/goal-tools.js +279 -0
  77. package/dist/src/tools/goal-tools.js.map +1 -0
  78. package/dist/src/tools/omni-tools.d.ts +8 -0
  79. package/dist/src/tools/omni-tools.js +349 -0
  80. package/dist/src/tools/omni-tools.js.map +1 -0
  81. package/dist/src/tools/permissions.d.ts +11 -0
  82. package/dist/src/tools/permissions.js +74 -0
  83. package/dist/src/tools/permissions.js.map +1 -0
  84. package/dist/src/tools/plan-tools.d.ts +3 -0
  85. package/dist/src/tools/plan-tools.js +314 -0
  86. package/dist/src/tools/plan-tools.js.map +1 -0
  87. package/dist/src/tools/process-tools.d.ts +6 -0
  88. package/dist/src/tools/process-tools.js +199 -0
  89. package/dist/src/tools/process-tools.js.map +1 -0
  90. package/dist/src/tools/registry.d.ts +20 -0
  91. package/dist/src/tools/registry.js +187 -0
  92. package/dist/src/tools/registry.js.map +1 -0
  93. package/dist/src/tools/schemas.d.ts +3 -0
  94. package/dist/src/tools/schemas.js +500 -0
  95. package/dist/src/tools/schemas.js.map +1 -0
  96. package/dist/src/tools/skill-tools.d.ts +6 -0
  97. package/dist/src/tools/skill-tools.js +124 -0
  98. package/dist/src/tools/skill-tools.js.map +1 -0
  99. package/dist/src/tools/text-args.d.ts +5 -0
  100. package/dist/src/tools/text-args.js +22 -0
  101. package/dist/src/tools/text-args.js.map +1 -0
  102. package/dist/src/tools/web-search.d.ts +5 -0
  103. package/dist/src/tools/web-search.js +602 -0
  104. package/dist/src/tools/web-search.js.map +1 -0
  105. package/dist/src/tools/workspace-tools.d.ts +17 -0
  106. package/dist/src/tools/workspace-tools.js +561 -0
  107. package/dist/src/tools/workspace-tools.js.map +1 -0
  108. package/dist/src/tui/activity.d.ts +11 -0
  109. package/dist/src/tui/activity.js +75 -0
  110. package/dist/src/tui/activity.js.map +1 -0
  111. package/dist/src/tui/ansi.d.ts +24 -0
  112. package/dist/src/tui/ansi.js +131 -0
  113. package/dist/src/tui/ansi.js.map +1 -0
  114. package/dist/src/tui/app.d.ts +163 -0
  115. package/dist/src/tui/app.js +4204 -0
  116. package/dist/src/tui/app.js.map +1 -0
  117. package/dist/src/tui/cache-footer.d.ts +21 -0
  118. package/dist/src/tui/cache-footer.js +75 -0
  119. package/dist/src/tui/cache-footer.js.map +1 -0
  120. package/dist/src/tui/clarify.d.ts +14 -0
  121. package/dist/src/tui/clarify.js +187 -0
  122. package/dist/src/tui/clarify.js.map +1 -0
  123. package/dist/src/tui/composer.d.ts +79 -0
  124. package/dist/src/tui/composer.js +592 -0
  125. package/dist/src/tui/composer.js.map +1 -0
  126. package/dist/src/tui/event-view.d.ts +5 -0
  127. package/dist/src/tui/event-view.js +392 -0
  128. package/dist/src/tui/event-view.js.map +1 -0
  129. package/dist/src/tui/home.d.ts +7 -0
  130. package/dist/src/tui/home.js +92 -0
  131. package/dist/src/tui/home.js.map +1 -0
  132. package/dist/src/tui/markdown.d.ts +18 -0
  133. package/dist/src/tui/markdown.js +271 -0
  134. package/dist/src/tui/markdown.js.map +1 -0
  135. package/dist/src/tui/mode-footer.d.ts +9 -0
  136. package/dist/src/tui/mode-footer.js +62 -0
  137. package/dist/src/tui/mode-footer.js.map +1 -0
  138. package/dist/src/tui/plan-view.d.ts +8 -0
  139. package/dist/src/tui/plan-view.js +45 -0
  140. package/dist/src/tui/plan-view.js.map +1 -0
  141. package/dist/src/tui/prompt-queue.d.ts +18 -0
  142. package/dist/src/tui/prompt-queue.js +27 -0
  143. package/dist/src/tui/prompt-queue.js.map +1 -0
  144. package/dist/src/tui/resize.d.ts +7 -0
  145. package/dist/src/tui/resize.js +15 -0
  146. package/dist/src/tui/resize.js.map +1 -0
  147. package/dist/src/tui/session-picker.d.ts +10 -0
  148. package/dist/src/tui/session-picker.js +17 -0
  149. package/dist/src/tui/session-picker.js.map +1 -0
  150. package/dist/src/tui/session-transcript.d.ts +2 -0
  151. package/dist/src/tui/session-transcript.js +44 -0
  152. package/dist/src/tui/session-transcript.js.map +1 -0
  153. package/dist/src/tui/slash-notice.d.ts +2 -0
  154. package/dist/src/tui/slash-notice.js +9 -0
  155. package/dist/src/tui/slash-notice.js.map +1 -0
  156. package/dist/src/tui/slash.d.ts +21 -0
  157. package/dist/src/tui/slash.js +103 -0
  158. package/dist/src/tui/slash.js.map +1 -0
  159. package/dist/src/tui/splash.d.ts +4 -0
  160. package/dist/src/tui/splash.js +64 -0
  161. package/dist/src/tui/splash.js.map +1 -0
  162. package/dist/src/tui/tool-renderer.d.ts +6 -0
  163. package/dist/src/tui/tool-renderer.js +1024 -0
  164. package/dist/src/tui/tool-renderer.js.map +1 -0
  165. package/dist/src/tui/transcript-spacing.d.ts +1 -0
  166. package/dist/src/tui/transcript-spacing.js +4 -0
  167. package/dist/src/tui/transcript-spacing.js.map +1 -0
  168. package/dist/src/types.d.ts +220 -0
  169. package/dist/src/types.js +2 -0
  170. package/dist/src/types.js.map +1 -0
  171. package/dist/src/util/abort.d.ts +3 -0
  172. package/dist/src/util/abort.js +19 -0
  173. package/dist/src/util/abort.js.map +1 -0
  174. package/dist/src/util/clock.d.ts +2 -0
  175. package/dist/src/util/clock.js +7 -0
  176. package/dist/src/util/clock.js.map +1 -0
  177. package/dist/src/util/fs.d.ts +13 -0
  178. package/dist/src/util/fs.js +75 -0
  179. package/dist/src/util/fs.js.map +1 -0
  180. package/dist/src/util/hash.d.ts +6 -0
  181. package/dist/src/util/hash.js +50 -0
  182. package/dist/src/util/hash.js.map +1 -0
  183. package/dist/src/util/limit.d.ts +11 -0
  184. package/dist/src/util/limit.js +29 -0
  185. package/dist/src/util/limit.js.map +1 -0
  186. package/dist/src/util/types.d.ts +22 -0
  187. package/dist/src/util/types.js +33 -0
  188. package/dist/src/util/types.js.map +1 -0
  189. package/dist/src/validation/acceptance.d.ts +12 -0
  190. package/dist/src/validation/acceptance.js +251 -0
  191. package/dist/src/validation/acceptance.js.map +1 -0
  192. package/dist/src/validation/milestone.d.ts +2 -0
  193. package/dist/src/validation/milestone.js +141 -0
  194. package/dist/src/validation/milestone.js.map +1 -0
  195. package/docs/final-acceptance-task.md +193 -0
  196. package/docs/public-source-hygiene.md +21 -0
  197. package/docs/roadmap.md +265 -0
  198. package/docs/tui-product-design.md +270 -0
  199. package/package.json +67 -0
  200. package/skills/coding-workflow/SKILL.md +16 -0
@@ -0,0 +1,270 @@
1
+ # TUI Product Design
2
+
3
+ Inferoa should feel like a purpose-built inference-native terminal product,
4
+ not a generic chat prompt.
5
+
6
+ ## Brand Direction
7
+
8
+ The terminal UI should express:
9
+
10
+ - vLLM-native inference awareness;
11
+ - fast local/remote endpoint control;
12
+ - long-running coding focus;
13
+ - visible cache/context discipline;
14
+ - precise tool execution.
15
+
16
+ Visual language:
17
+
18
+ - dark, high-contrast base;
19
+ - cyan, blue, white, and graphite as the primary palette;
20
+ - sparing amber/red for warnings and destructive states;
21
+ - thin borders, compact panels, and dense but readable information;
22
+ - animated status accents for streaming, endpoint probing, tool execution, and
23
+ compression;
24
+ - no decorative gradients or unrelated illustrations.
25
+
26
+ ## Default Screen
27
+
28
+ `inferoa` opens the TUI home/chat surface.
29
+
30
+ First viewport:
31
+
32
+ - product wordmark;
33
+ - short workspace path;
34
+ - short session id/title;
35
+ - selected provider and model;
36
+ - compact Omni capability status;
37
+ - git branch and dirty state;
38
+ - context usage and compression status;
39
+ - recent sessions;
40
+ - full-width composer with `/` command discovery and `$` skill
41
+ discovery.
42
+
43
+ The default chat banner should not expose base URLs, workspace ids, run ids,
44
+ client ids, cache salts, prompt epoch ids, or other internal routing values.
45
+ Those belong in explicit diagnostic views such as `/endpoints` and
46
+ `/activity`.
47
+
48
+ The UI should make the product identity obvious without forcing the user through
49
+ a marketing page.
50
+
51
+ Branding animation:
52
+
53
+ - the first launch should use a short full-screen intro that establishes the
54
+ Inferoa mark, then dissolves into the working UI;
55
+ - the animation should use a terminal-native gradient/shine treatment with a
56
+ fallback for 256-color and narrow terminals;
57
+ - the intro must be skippable with Enter, Space, Escape, or Ctrl-C;
58
+ - the working welcome screen should keep a lighter animated accent, not a
59
+ constantly distracting full-screen animation.
60
+
61
+ ## Input Model
62
+
63
+ Supported entrypoints:
64
+
65
+ - plain text submits a chat turn;
66
+ - `/` opens command palette;
67
+ - `$` opens skill catalog and skill filter;
68
+ - `!` opens shell command helper;
69
+ - file/path mentions trigger local path autocomplete;
70
+ - model/provider selectors are opened from setup or status views;
71
+ - image/video artifacts can be attached or referenced when Omni endpoints are
72
+ configured.
73
+
74
+ `inferoa "prompt"` opens the same UI and sends the prompt as the first user
75
+ turn after initialization.
76
+
77
+ ## Setup UX
78
+
79
+ Setup is scene-based and interactive.
80
+
81
+ Setup shell:
82
+
83
+ - full-screen splash;
84
+ - cross-dissolve transition into setup scenes;
85
+ - scene header with Inferoa mark, step count, title, and subtitle;
86
+ - tabbed panels where one setup step contains multiple related choices;
87
+ - modal input for secrets, callback URLs, endpoint probing, and confirmation;
88
+ - footer with keyboard hints;
89
+ - outro transition back to chat.
90
+
91
+ Provider setup flow:
92
+
93
+ 1. Choose direct vLLM, auto Semantic Router, or external provider.
94
+ 2. Enter endpoint URL.
95
+ 3. Enter API key in a masked field; setup stores it in the local vault and
96
+ writes only `api_key_ref`.
97
+ 4. Probe `/v1/models`.
98
+ 5. Select a model from a TUI list.
99
+ 6. Run a minimal capability probe.
100
+ 7. Review and save config.
101
+
102
+ Omni setup flow:
103
+
104
+ 1. Add capability endpoint cards for vision, image generation, video
105
+ understanding, video generation, audio understanding, and audio generation.
106
+ 2. Probe each enabled endpoint independently.
107
+ 3. Select model per capability.
108
+ 4. Show unavailable capabilities as disabled, not failed.
109
+
110
+ ## Chat Transcript
111
+
112
+ The transcript should render structured cards:
113
+
114
+ - user turns;
115
+ - assistant streaming output;
116
+ - tool call pending/running/complete/failed states;
117
+ - file diff preview;
118
+ - shell process output;
119
+ - git summary;
120
+ - todo/activity updates;
121
+ - code-intelligence references;
122
+ - context compression summaries;
123
+ - endpoint evidence;
124
+ - image/video artifacts.
125
+
126
+ Cards should be compact by default and expandable for large output or managed
127
+ resources.
128
+
129
+ Tool cards:
130
+
131
+ - pending/running cards use animated borders or spinner accents with bounded
132
+ frame rates;
133
+ - completed cards switch to success/error styling without leaving active
134
+ timers;
135
+ - arguments render inline when collapsed and as a JSON tree when expanded;
136
+ - results use tool-specific renderers instead of generic JSON whenever
137
+ possible;
138
+ - image results render inline when the terminal supports images and fall back
139
+ to dimensions/type markers when it does not.
140
+
141
+ File diff cards:
142
+
143
+ - show a streaming preview before the edit is applied;
144
+ - avoid jitter from partial streamed JSON by trimming trailing unbalanced
145
+ removal/hunk lines until the matching additions arrive;
146
+ - show line numbers in a stable gutter;
147
+ - color removed and added lines distinctly;
148
+ - highlight changed tokens inside replaced lines;
149
+ - visualize leading tabs/spaces subtly so indentation edits are visible;
150
+ - syntax-highlight unchanged context lines when a language can be inferred.
151
+
152
+ ## Session UX
153
+
154
+ `/sessions` is a chat-local overlay, not a separate command screen. It should
155
+ support:
156
+
157
+ - Resume: attach to an existing non-archived session;
158
+ - New session: create a fresh session in the current workspace;
159
+ - Rename: update the human-readable session title;
160
+ - Archive: hide a completed or stale session from the default list;
161
+ - Show all: include archived sessions and lock state.
162
+
163
+ Session rows show short session id, title, status, updated time, and a lock
164
+ summary such as `unlocked` or `locked daemon 2m`. They must not show
165
+ `workspace_id`, `run_id`, `client_id`, prompt epoch ids, or cache salts.
166
+
167
+ Shell/process cards:
168
+
169
+ - show command header, live output, and cancel hint;
170
+ - throttle high-throughput output updates so rendering cannot starve the event
171
+ loop;
172
+ - keep full output in resources while the visible panel shows a bounded live
173
+ preview;
174
+ - support expand/collapse after completion;
175
+ - show exit code, cancellation, hidden-line count, and truncation notices.
176
+
177
+ Turn footer:
178
+
179
+ - every assistant turn ends with a compact usage/cache footer;
180
+ - direct vLLM footer fields: prompt tokens, cached prompt tokens, cache hit
181
+ rate, output tokens, request id, model, endpoint mode, and latency;
182
+ - external provider footer fields: prompt/output tokens and provider usage
183
+ metadata when available;
184
+ - unsupported cache evidence is displayed as unavailable, not as zero.
185
+
186
+ ## Animation Rules
187
+
188
+ Animations should communicate state, not decorate.
189
+
190
+ - streaming assistant text uses a subtle cursor or shimmer;
191
+ - endpoint probing shows a short pulse/spinner and resolves to success,
192
+ warning, or error;
193
+ - tool execution shows elapsed time and changing status;
194
+ - shell/process output scrolls in a bounded panel;
195
+ - context compression shows a short transition from "archiving" to
196
+ "summarized";
197
+ - image/video generation shows queued, generating, storing, and ready states.
198
+
199
+ Animations must stop when the underlying operation stops and must not flood the
200
+ event loop or corrupt terminal resize behavior.
201
+
202
+ Animation timing:
203
+
204
+ - setup splash can update around 30 FPS;
205
+ - pending tool borders can redraw up to the renderer's normal frame cadence
206
+ while advancing spinner glyphs more slowly;
207
+ - high-throughput process output should be throttled and coalesced;
208
+ - todo/activity completion can use a short reveal animation, then settle.
209
+
210
+ ## Status Line
211
+
212
+ The status line should prioritize:
213
+
214
+ - provider/model;
215
+ - endpoint mode: direct, auto, external;
216
+ - Omni capability status;
217
+ - workspace short path;
218
+ - session short id/title;
219
+ - git branch;
220
+ - context usage;
221
+ - daemon/job state;
222
+ - permission mode.
223
+
224
+ Internal ids such as workspace id, run id, client id, prompt epoch id, and cache
225
+ salt do not appear in normal UI.
226
+
227
+ The status line is not the only evidence surface. Per-turn cache hit rate must
228
+ be visible in the transcript footer so users can see whether a specific request
229
+ hit the vLLM prefix cache.
230
+
231
+ ## Slash Commands
232
+
233
+ Slash commands are TUI-native commands, not legacy CLI aliases.
234
+
235
+ Initial command set:
236
+
237
+ - `/setup`: open setup wizard;
238
+ - `/model`: open model/provider selector;
239
+ - `/endpoints`: open endpoint capability and signal view;
240
+ - `/skills`: open discovered skill picker and enable/disable skills;
241
+ - `/cache`: show per-turn and aggregate cache evidence;
242
+ - `/context`: show context and compression breakdown;
243
+ - `/tools`: show active fixed tool schemas and tool renderer status;
244
+ - `/sessions`: open session picker;
245
+ - `/jobs`: open daemon/supervisor jobs;
246
+ - `/todo`: open task ledger;
247
+ - `/activity`: open the activity ledger and final report resources;
248
+ - `/acceptance`: open final acceptance workflow;
249
+ - `/help`: show keyboard shortcuts and command list;
250
+ - `/exit`: exit the TUI.
251
+
252
+ Commands that do not map to Inferoa product surfaces should be deleted from
253
+ the active registry rather than retained for compatibility.
254
+
255
+ ## Acceptance UX
256
+
257
+ Final acceptance should be visible as a TUI workflow:
258
+
259
+ - preflight endpoint checklist;
260
+ - AMD deployment checklist;
261
+ - external provider checklist;
262
+ - coding task progress;
263
+ - tool coverage checklist;
264
+ - compression evidence;
265
+ - Omni artifact checklist;
266
+ - daemon attach/detach/status/cancel checklist;
267
+ - final evidence report.
268
+
269
+ The TUI may call automation underneath, but the user should be able to watch
270
+ and inspect the acceptance run from the terminal app.
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "inferoa",
3
+ "version": "0.1.0",
4
+ "description": "Inference-optimized agent for long-horizon tasks in the vLLM ecosystem.",
5
+ "license": "Apache-2.0",
6
+ "type": "module",
7
+ "bin": {
8
+ "inferoa": "./dist/src/cli.js"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/agentic-in/inferoa.git"
13
+ },
14
+ "homepage": "https://inferoa.agentic-in.ai/",
15
+ "bugs": {
16
+ "url": "https://github.com/agentic-in/inferoa/issues"
17
+ },
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "keywords": [
22
+ "agent",
23
+ "vllm",
24
+ "inference",
25
+ "coding-agent",
26
+ "prefix-cache"
27
+ ],
28
+ "files": [
29
+ "dist/src",
30
+ "skills",
31
+ "README.md",
32
+ "docs"
33
+ ],
34
+ "scripts": {
35
+ "build": "tsc -p tsconfig.json",
36
+ "check": "tsc --noEmit -p tsconfig.json",
37
+ "test": "npm run build && node --test dist/test/*.test.js",
38
+ "prepack": "npm run build",
39
+ "site:start": "npm --prefix website run start",
40
+ "site:build": "npm --prefix website run build",
41
+ "site:serve": "npm --prefix website run serve",
42
+ "validate:t0": "npm run build && node dist/src/validation/milestone.js T0",
43
+ "validate:t1": "npm run build && node dist/src/validation/milestone.js T1",
44
+ "validate:t2": "npm run build && node dist/src/validation/milestone.js T2",
45
+ "validate:t3": "npm run build && node dist/src/validation/milestone.js T3",
46
+ "validate:t4": "npm run build && node dist/src/validation/milestone.js T4",
47
+ "validate:t5": "npm run build && node dist/src/validation/milestone.js T5",
48
+ "validate:t6": "npm run build && node dist/src/validation/milestone.js T6",
49
+ "validate:t7": "npm run build && node dist/src/validation/milestone.js T7",
50
+ "validate:t8": "npm run build && node dist/src/validation/milestone.js T8",
51
+ "validate:t9": "npm run build && node dist/src/validation/milestone.js T9",
52
+ "validate:t10": "npm run build && node dist/src/validation/milestone.js T10",
53
+ "validate:all": "npm run build && for milestone in T0 T1 T2 T3 T4 T5 T6 T7 T8 T9 T10; do node dist/src/validation/milestone.js $milestone || exit 1; done"
54
+ },
55
+ "engines": {
56
+ "node": ">=24"
57
+ },
58
+ "dependencies": {
59
+ "@colbymchenry/codegraph": "0.9.9",
60
+ "commander": "^14.0.2",
61
+ "typescript": "^5.9.3",
62
+ "yaml": "^2.8.1"
63
+ },
64
+ "devDependencies": {
65
+ "@types/node": "^24.10.1"
66
+ }
67
+ }
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: "coding-workflow"
3
+ description: "Default Inferoa coding workflow: inspect, plan, edit, test, record evidence, and preserve context."
4
+ ---
5
+
6
+ # Coding Workflow
7
+
8
+ Use repository files and docs as the source of truth. For non-trivial work:
9
+
10
+ 1. Inspect the relevant files before editing.
11
+ 2. Use `file_search`, `read_file`, and code-intelligence tools where supported.
12
+ 3. Keep a task ledger with `todo_write` and evidence with `complete_step`.
13
+ 4. Prefer `apply_patch` or structured edits for source changes.
14
+ 5. Run targeted validation through `run_command`.
15
+ 6. Store bulky outputs as resources and read only bounded pages.
16
+ 7. Continue after context compression using the summary plus recent tail.