@nac3/forge-cli 0.2.0-alpha.59z.121 → 0.2.0-alpha.59z.158
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/dist/agents/bridge.d.ts +69 -0
- package/dist/agents/bridge.d.ts.map +1 -0
- package/dist/agents/bridge.js +295 -0
- package/dist/agents/bridge.js.map +1 -0
- package/dist/agents/cli_real.d.ts +38 -0
- package/dist/agents/cli_real.d.ts.map +1 -0
- package/dist/agents/cli_real.js +46 -0
- package/dist/agents/cli_real.js.map +1 -0
- package/dist/agents/config_schema.d.ts +1 -1
- package/dist/agents/config_schema.d.ts.map +1 -1
- package/dist/agents/config_schema.js +16 -0
- package/dist/agents/config_schema.js.map +1 -1
- package/dist/agents/defaults.d.ts.map +1 -1
- package/dist/agents/defaults.js.map +1 -1
- package/dist/agents/delegate.d.ts +36 -0
- package/dist/agents/delegate.d.ts.map +1 -0
- package/dist/agents/delegate.js +68 -0
- package/dist/agents/delegate.js.map +1 -0
- package/dist/agents/iterative_step.d.ts +95 -0
- package/dist/agents/iterative_step.d.ts.map +1 -0
- package/dist/agents/iterative_step.js +249 -0
- package/dist/agents/iterative_step.js.map +1 -0
- package/dist/agents/llm_step.d.ts +50 -0
- package/dist/agents/llm_step.d.ts.map +1 -0
- package/dist/agents/llm_step.js +28 -0
- package/dist/agents/llm_step.js.map +1 -0
- package/dist/agents/real_step_factory.d.ts +95 -0
- package/dist/agents/real_step_factory.d.ts.map +1 -0
- package/dist/agents/real_step_factory.js +51 -0
- package/dist/agents/real_step_factory.js.map +1 -0
- package/dist/agents/runner.d.ts +14 -0
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +10 -1
- package/dist/agents/runner.js.map +1 -1
- package/dist/agents/runtime.d.ts +115 -0
- package/dist/agents/runtime.d.ts.map +1 -0
- package/dist/agents/runtime.js +429 -0
- package/dist/agents/runtime.js.map +1 -0
- package/dist/agents/system_prompt.d.ts +36 -0
- package/dist/agents/system_prompt.d.ts.map +1 -0
- package/dist/agents/system_prompt.js +101 -0
- package/dist/agents/system_prompt.js.map +1 -0
- package/dist/agents/types.d.ts +12 -1
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/types.js.map +1 -1
- package/dist/bin/yf.d.ts.map +1 -1
- package/dist/bin/yf.js +9 -0
- package/dist/bin/yf.js.map +1 -1
- package/dist/chat/claude_cli.d.ts +42 -0
- package/dist/chat/claude_cli.d.ts.map +1 -0
- package/dist/chat/claude_cli.js +299 -0
- package/dist/chat/claude_cli.js.map +1 -0
- package/dist/chat/graph_snapshot.d.ts +38 -0
- package/dist/chat/graph_snapshot.d.ts.map +1 -0
- package/dist/chat/graph_snapshot.js +159 -0
- package/dist/chat/graph_snapshot.js.map +1 -0
- package/dist/chat/ingest_session.d.ts +24 -4
- package/dist/chat/ingest_session.d.ts.map +1 -1
- package/dist/chat/ingest_session.js +139 -4
- package/dist/chat/ingest_session.js.map +1 -1
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +1358 -0
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/server.d.ts +21 -0
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +904 -4
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/tools/nac3_invoke.d.ts +5 -0
- package/dist/chat/tools/nac3_invoke.d.ts.map +1 -1
- package/dist/chat/tools/nac3_invoke.js +1 -0
- package/dist/chat/tools/nac3_invoke.js.map +1 -1
- package/dist/chat/tools.d.ts.map +1 -1
- package/dist/chat/tools.js +12 -0
- package/dist/chat/tools.js.map +1 -1
- package/dist/commands/agent.d.ts +12 -1
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +92 -1
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/chat.d.ts +10 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +12 -1
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/director.d.ts +37 -0
- package/dist/commands/director.d.ts.map +1 -0
- package/dist/commands/director.js +290 -0
- package/dist/commands/director.js.map +1 -0
- package/dist/commands/keys_setup.d.ts +1 -0
- package/dist/commands/keys_setup.d.ts.map +1 -1
- package/dist/commands/keys_setup.js +61 -11
- package/dist/commands/keys_setup.js.map +1 -1
- package/dist/core/pilot_setup.d.ts +14 -1
- package/dist/core/pilot_setup.d.ts.map +1 -1
- package/dist/core/pilot_setup.js +62 -1
- package/dist/core/pilot_setup.js.map +1 -1
- package/dist/core/provider_keys.d.ts.map +1 -1
- package/dist/core/provider_keys.js +12 -5
- package/dist/core/provider_keys.js.map +1 -1
- package/dist/design/yujin_design_resolver.d.ts +77 -0
- package/dist/design/yujin_design_resolver.d.ts.map +1 -0
- package/dist/design/yujin_design_resolver.js +113 -0
- package/dist/design/yujin_design_resolver.js.map +1 -0
- package/dist/docs/doctrine/default-design-system.md +120 -0
- package/dist/docs/doctrine/language-sovereignty.md +143 -0
- package/dist/docs/doctrine/testing-policy.md +211 -0
- package/dist/nac3/approval_queue.d.ts +8 -0
- package/dist/nac3/approval_queue.d.ts.map +1 -1
- package/dist/nac3/approval_queue.js.map +1 -1
- package/dist/nac3/internal_manifest.d.ts.map +1 -1
- package/dist/nac3/internal_manifest.js +178 -0
- package/dist/nac3/internal_manifest.js.map +1 -1
- package/dist/office/excel.d.ts +22 -0
- package/dist/office/excel.d.ts.map +1 -1
- package/dist/office/excel.js +82 -0
- package/dist/office/excel.js.map +1 -1
- package/dist/qa/brain_matrix/fixtures/scenario_a11y_focus_after_open.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_a11y_label_unlabeled_button.json +26 -0
- package/dist/qa/brain_matrix/fixtures/scenario_agent_director_consults_workflow_before_dispatch.json +42 -0
- package/dist/qa/brain_matrix/fixtures/scenario_analyst_extracts_then_returns.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_coder_consults_nac_spec_before_writing.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_default_design_system_override_shadcn.json +45 -0
- package/dist/qa/brain_matrix/fixtures/scenario_default_design_system_use_card_template.json +44 -0
- package/dist/qa/brain_matrix/fixtures/scenario_director_delegates_to_analyst.json +26 -0
- package/dist/qa/brain_matrix/fixtures/scenario_director_no_self_delegation.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_director_terminal_done_marker.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_default_design_system.json +50 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_language_sovereignty.json +53 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_testing_policy.json +55 -0
- package/dist/qa/brain_matrix/fixtures/scenario_language_sovereignty_not_conducive_spa_python.json +61 -0
- package/dist/qa/brain_matrix/fixtures/scenario_language_sovereignty_user_picks_python.json +48 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_destructive_pauses_for_r8.json +42 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_happy_path_writes_pizarron.json +76 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_network_timeout_graceful.json +41 -0
- package/dist/qa/brain_matrix/fixtures/scenario_no_hardcoded_color_use_token.json +47 -0
- package/dist/qa/brain_matrix/fixtures/scenario_office_excel_update_cell_picks_right_verb.json +26 -0
- package/dist/qa/brain_matrix/fixtures/scenario_scaffolder_destructive_pauses_for_approval.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_sumie_icon_pick_from_catalog.json +56 -0
- package/dist/qa/brain_matrix/fixtures/scenario_tester_uses_shell_exec_only.json +27 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/workflow/graph.d.ts +59 -0
- package/dist/workflow/graph.d.ts.map +1 -0
- package/dist/workflow/graph.js +137 -0
- package/dist/workflow/graph.js.map +1 -0
- package/dist/workflow/state.d.ts +34 -0
- package/dist/workflow/state.d.ts.map +1 -1
- package/dist/workflow/state.js.map +1 -1
- package/docs/doctrine/default-design-system.md +120 -0
- package/docs/doctrine/language-sovereignty.md +143 -0
- package/docs/doctrine/testing-policy.md +211 -0
- package/package.json +102 -100
- package/src/i18n/catalogs/ar.json +20 -1
- package/src/i18n/catalogs/de.json +20 -1
- package/src/i18n/catalogs/en.json +20 -21
- package/src/i18n/catalogs/es.json +20 -21
- package/src/i18n/catalogs/fr.json +20 -1
- package/src/i18n/catalogs/hi.json +20 -1
- package/src/i18n/catalogs/it.json +20 -1
- package/src/i18n/catalogs/ja.json +20 -1
- package/src/i18n/catalogs/pt.json +20 -1
- package/src/i18n/catalogs/zh.json +20 -1
- package/templates/sumi-context.template.md +57 -0
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
"panel.button.maximise": "Maximise",
|
|
13
13
|
"panel.button.close": "Close",
|
|
14
14
|
"panel.button.language": "Language",
|
|
15
|
-
|
|
16
15
|
"panel.trace.title": "Action trace",
|
|
17
16
|
"panel.trace.count.one": "{n} tool call",
|
|
18
17
|
"panel.trace.count.other": "{n} tool calls",
|
|
@@ -21,10 +20,8 @@
|
|
|
21
20
|
"panel.trace.badge.tool": "TOOL",
|
|
22
21
|
"panel.trace.badge.voice": "VOICE",
|
|
23
22
|
"panel.trace.badge.error": "ERROR",
|
|
24
|
-
|
|
25
23
|
"panel.stream.empty.kanji": "侑仁",
|
|
26
24
|
"panel.stream.empty.body": "Yujin Forge online. Ask for changes to the project.",
|
|
27
|
-
|
|
28
25
|
"panel.status.no_audio": "No audio captured. The microphone probably did not pick up anything.",
|
|
29
26
|
"panel.status.did_not_catch": "Did not catch that. Try again.",
|
|
30
27
|
"panel.status.mic_denied": "Microphone permission denied or unavailable: {error}",
|
|
@@ -34,10 +31,8 @@
|
|
|
34
31
|
"panel.status.reading": "Reading {filename}...",
|
|
35
32
|
"panel.status.ingest_failed": "Ingest failed: {error}",
|
|
36
33
|
"panel.status.read_failed": "Could not read the specification: {error}",
|
|
37
|
-
|
|
38
34
|
"panel.drop.title": "Drop the specification here",
|
|
39
35
|
"panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
|
|
40
|
-
|
|
41
36
|
"panel.ingest.spec_attached": "Spec attached: {filename}, {kb} KB",
|
|
42
37
|
"panel.ingest.read_label": "Read.",
|
|
43
38
|
"panel.ingest.title_label": "Title: {title}",
|
|
@@ -45,7 +40,6 @@
|
|
|
45
40
|
"panel.ingest.format_label": "Format: {format} / {sections} section(s) / {kb} KB",
|
|
46
41
|
"panel.ingest.first_lines": "First lines:",
|
|
47
42
|
"panel.ingest.action_done": "Action {tool} completed.",
|
|
48
|
-
|
|
49
43
|
"vault.modal.aria.close": "Close credentials modal",
|
|
50
44
|
"vault.modal.title": "Credentials (vault)",
|
|
51
45
|
"vault.tab.list": "Loaded slots",
|
|
@@ -60,7 +54,6 @@
|
|
|
60
54
|
"vault.add.button_cancel": "Cancel",
|
|
61
55
|
"vault.add.success": "Slot {slot} saved.",
|
|
62
56
|
"vault.add.overwrite": "Slot {slot} overwritten.",
|
|
63
|
-
|
|
64
57
|
"manual.intro": "Yujin Forge -- user manual",
|
|
65
58
|
"manual.section.welcome": "Welcome",
|
|
66
59
|
"manual.section.install": "Installation",
|
|
@@ -69,7 +62,6 @@
|
|
|
69
62
|
"manual.section.spec_ingest": "Specification ingest",
|
|
70
63
|
"manual.section.troubleshooting": "Troubleshooting",
|
|
71
64
|
"manual.section.support": "Support",
|
|
72
|
-
|
|
73
65
|
"lang.name.es": "Spanish",
|
|
74
66
|
"lang.name.en": "English",
|
|
75
67
|
"lang.name.pt": "Portuguese",
|
|
@@ -80,10 +72,8 @@
|
|
|
80
72
|
"lang.name.ar": "Arabic",
|
|
81
73
|
"lang.name.de": "German",
|
|
82
74
|
"lang.name.it": "Italian",
|
|
83
|
-
|
|
84
75
|
"recap.fallback_period": ".",
|
|
85
76
|
"recap.empty": "There is nothing to recap yet.",
|
|
86
|
-
|
|
87
77
|
"error_ui.severity.info": "INFO",
|
|
88
78
|
"error_ui.severity.warning": "WARNING",
|
|
89
79
|
"error_ui.severity.error": "ERROR",
|
|
@@ -98,54 +88,63 @@
|
|
|
98
88
|
"error_ui.unknown.what": "Forge encountered an internal error (unknown code).",
|
|
99
89
|
"error_ui.unknown.why": "The code {code} is not in the catalog. This is a bug.",
|
|
100
90
|
"error_ui.unknown.fix": "Open an issue at https://github.com/yujinapp/yujin-forge/issues with the code + the traceback.",
|
|
101
|
-
|
|
102
91
|
"error.cap_frontier_exhausted.what": "Monthly frontier tier token cap reached (large model).",
|
|
103
92
|
"error.cap_frontier_exhausted.why": "Your plan {plan} allows up to {cap} tokens/month on frontier. You used {used}. Resets at the start of the next UTC month.",
|
|
104
93
|
"error.cap_frontier_exhausted.fix": "Switch to direct Anthropic BYOK: bypasses the worker monthly cap. Your cost becomes whatever Anthropic charges directly.",
|
|
105
94
|
"error.cap_frontier_exhausted.cmd": "yf brain config --frontier-provider anthropic --frontier-model claude-opus-4-7",
|
|
106
|
-
|
|
107
95
|
"error.cap_eco_exhausted.what": "Monthly eco tier token cap reached (small model).",
|
|
108
96
|
"error.cap_eco_exhausted.why": "Your plan {plan} allows up to {cap} tokens/month on eco. You used {used}. Resets at the start of the next UTC month.",
|
|
109
97
|
"error.cap_eco_exhausted.fix": "Switch to direct BYOK or upgrade your plan. BYOK bypasses the worker cap.",
|
|
110
98
|
"error.cap_eco_exhausted.cmd": "yf brain config --eco-provider google_ai --eco-model gemini-2.5-flash-lite",
|
|
111
|
-
|
|
112
99
|
"error.tier_not_in_plan.what": "Tier {tier} is not enabled on your plan.",
|
|
113
100
|
"error.tier_not_in_plan.why": "Your plan {plan} does not include the {tier} tier. You are probably on free-public or your license expired.",
|
|
114
101
|
"error.tier_not_in_plan.fix": "Activate a paid license, or switch to direct BYOK (your cost, no worker cap).",
|
|
115
102
|
"error.tier_not_in_plan.cmd": "yf license activate --key <jwt>",
|
|
116
|
-
|
|
117
103
|
"error.response_truncated.what": "The model response was cut off before finishing.",
|
|
118
104
|
"error.response_truncated.why": "The managed_max_tokens_per_turn = {limit} tokens limit was reached mid-turn. The model stopped generating.",
|
|
119
105
|
"error.response_truncated.fix": "Raise the limit via yf limits. Applies to the next turn without restarting the chat.",
|
|
120
106
|
"error.response_truncated.cmd": "yf limits set managed_max_tokens_per_turn 16384",
|
|
121
107
|
"error.response_truncated.banner": "[Response truncated by max_tokens={max}. Raise the limit with: yf limits set managed_max_tokens_per_turn {suggested}]",
|
|
122
|
-
|
|
123
108
|
"error.modal_trace_stale.what": "The approval modal expired or is orphaned.",
|
|
124
109
|
"error.modal_trace_stale.why": "Trace_id {trace_id} has no pending approval in the dispatcher. Likely race condition between invoke and panel state, or a previous cancel left the trace zombie.",
|
|
125
110
|
"error.modal_trace_stale.fix": "Retry the verb from chat: starts a fresh trace. If it persists, run yf doctor to check the panel.",
|
|
126
111
|
"error.modal_trace_stale.cmd": "yf doctor",
|
|
127
|
-
|
|
128
112
|
"error.byok_key_missing.what": "Missing API key for provider {provider}.",
|
|
129
113
|
"error.byok_key_missing.why": "You configured {provider} as the {tier} tier provider but the byok_{slot} slot is not in the encrypted Vault.",
|
|
130
114
|
"error.byok_key_missing.fix": "Configure the key with yf keys set (atomic, mode 0600, never logged).",
|
|
131
115
|
"error.byok_key_missing.cmd": "yf keys set {slot}",
|
|
132
|
-
|
|
133
116
|
"error.worker_unreachable.what": "Could not reach the yujin.app worker.",
|
|
134
117
|
"error.worker_unreachable.why": "Network timeout or worker down (HTTP {status}). Retried {attempts} times.",
|
|
135
118
|
"error.worker_unreachable.fix": "Check your internet. If it is OK, switch temporarily to direct BYOK to avoid the worker dependency.",
|
|
136
119
|
"error.worker_unreachable.cmd": "yf brain config --frontier-provider anthropic",
|
|
137
|
-
|
|
138
120
|
"error.vault_decrypt_failed.what": "Could not decrypt a key from the Vault.",
|
|
139
121
|
"error.vault_decrypt_failed.why": "The master key is incorrect or the Vault file is corrupted. Can happen if you moved config between machines without migrating the master, or due to disk error.",
|
|
140
122
|
"error.vault_decrypt_failed.fix": "Pull the server copy (re-encrypts with your local master) if you have server backup active.",
|
|
141
123
|
"error.vault_decrypt_failed.cmd": "yf keys setup --pull",
|
|
142
|
-
|
|
143
124
|
"error.shell_exec_rejected.what": "You rejected the R8 modal for yujin.shell.exec.",
|
|
144
125
|
"error.shell_exec_rejected.why": "Command {command} was classified as {classification}. shell.exec always asks for approval for safety, even if the command is read-only.",
|
|
145
126
|
"error.shell_exec_rejected.fix": "If the command was read-only (yf projects active, git status, ls), use the equivalent native verb. If it was needed and you rejected by mistake, re-invoke.",
|
|
146
|
-
|
|
147
127
|
"error.project_not_registered.what": "No adopter project registered.",
|
|
148
128
|
"error.project_not_registered.why": "The verb you invoked needs an active project root but ~/.yujin-forge/projects.json has no entries.",
|
|
149
129
|
"error.project_not_registered.fix": "Create one with yujin.project.init or register an existing one with yf projects add.",
|
|
150
|
-
"error.project_not_registered.cmd": "yf projects scan"
|
|
130
|
+
"error.project_not_registered.cmd": "yf projects scan",
|
|
131
|
+
"panel.button.agents": "Agents",
|
|
132
|
+
"panel.agents.title": "Agents",
|
|
133
|
+
"panel.agents.subtitle": "Director and sub-agents registered in this project",
|
|
134
|
+
"panel.agents.empty.title": "No agents yet",
|
|
135
|
+
"panel.agents.empty.body": "Run `yf agent install --defaults` to register the Director and its 4 sub-agents (Analyst, Coder, Tester, Scaffolder).",
|
|
136
|
+
"panel.agents.legend.eco": "Eco",
|
|
137
|
+
"panel.agents.legend.managed": "Managed",
|
|
138
|
+
"panel.agents.legend.frontier": "Frontier",
|
|
139
|
+
"panel.agents.status.disabled": "Agent runtime not started",
|
|
140
|
+
"panel.agents.event.running": "Running",
|
|
141
|
+
"panel.agents.event.idle": "Idle",
|
|
142
|
+
"panel.agents.tick.live": "Connected",
|
|
143
|
+
"panel.agents.tick.lost": "Connection lost",
|
|
144
|
+
"workflow.phase.i": "Triage and intent",
|
|
145
|
+
"workflow.phase.ii": "Clarification (functional + 4 NFR + blocks)",
|
|
146
|
+
"workflow.phase.iii": "Specs (RFP + Arch + Design + approvals)",
|
|
147
|
+
"workflow.phase.iv": "Bootstrap",
|
|
148
|
+
"workflow.phase.v": "Block development",
|
|
149
|
+
"workflow.phase.vi": "Deploy + post-launch"
|
|
151
150
|
}
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
"panel.button.maximise": "Maximizar",
|
|
13
13
|
"panel.button.close": "Cerrar",
|
|
14
14
|
"panel.button.language": "Idioma",
|
|
15
|
-
|
|
16
15
|
"panel.trace.title": "Trace de acciones",
|
|
17
16
|
"panel.trace.count.one": "{n} llamada a herramienta",
|
|
18
17
|
"panel.trace.count.other": "{n} llamadas a herramientas",
|
|
@@ -21,10 +20,8 @@
|
|
|
21
20
|
"panel.trace.badge.tool": "TOOL",
|
|
22
21
|
"panel.trace.badge.voice": "VOZ",
|
|
23
22
|
"panel.trace.badge.error": "ERROR",
|
|
24
|
-
|
|
25
23
|
"panel.stream.empty.kanji": "侑仁",
|
|
26
24
|
"panel.stream.empty.body": "Yujin Forge en linea. Pedile cambios al proyecto.",
|
|
27
|
-
|
|
28
25
|
"panel.status.no_audio": "No se capturo audio. Probablemente el microfono no recibio nada.",
|
|
29
26
|
"panel.status.did_not_catch": "No te entendi. Probemos de nuevo.",
|
|
30
27
|
"panel.status.mic_denied": "Permiso de microfono denegado o no disponible: {error}",
|
|
@@ -34,10 +31,8 @@
|
|
|
34
31
|
"panel.status.reading": "Leyendo {filename}...",
|
|
35
32
|
"panel.status.ingest_failed": "La ingesta fallo: {error}",
|
|
36
33
|
"panel.status.read_failed": "No pude leer la especificacion: {error}",
|
|
37
|
-
|
|
38
34
|
"panel.drop.title": "Solta la especificacion aca",
|
|
39
35
|
"panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
|
|
40
|
-
|
|
41
36
|
"panel.ingest.spec_attached": "Especificacion adjunta: {filename}, {kb} KB",
|
|
42
37
|
"panel.ingest.read_label": "Leida.",
|
|
43
38
|
"panel.ingest.title_label": "Titulo: {title}",
|
|
@@ -45,7 +40,6 @@
|
|
|
45
40
|
"panel.ingest.format_label": "Formato: {format} / {sections} seccion(es) / {kb} KB",
|
|
46
41
|
"panel.ingest.first_lines": "Primeras lineas:",
|
|
47
42
|
"panel.ingest.action_done": "Accion {tool} completada.",
|
|
48
|
-
|
|
49
43
|
"vault.modal.title": "Credenciales (vault)",
|
|
50
44
|
"vault.modal.aria.close": "Cerrar modal de credenciales",
|
|
51
45
|
"vault.tab.list": "Slots cargados",
|
|
@@ -60,7 +54,6 @@
|
|
|
60
54
|
"vault.add.button_cancel": "Cancelar",
|
|
61
55
|
"vault.add.success": "Slot {slot} guardado.",
|
|
62
56
|
"vault.add.overwrite": "Slot {slot} sobrescrito.",
|
|
63
|
-
|
|
64
57
|
"manual.intro": "Yujin Forge -- manual de usuario",
|
|
65
58
|
"manual.section.welcome": "Bienvenida",
|
|
66
59
|
"manual.section.install": "Instalacion",
|
|
@@ -69,7 +62,6 @@
|
|
|
69
62
|
"manual.section.spec_ingest": "Ingesta de especificaciones",
|
|
70
63
|
"manual.section.troubleshooting": "Solucion de problemas",
|
|
71
64
|
"manual.section.support": "Soporte",
|
|
72
|
-
|
|
73
65
|
"lang.name.es": "Espanol",
|
|
74
66
|
"lang.name.en": "English",
|
|
75
67
|
"lang.name.pt": "Portugues",
|
|
@@ -80,10 +72,8 @@
|
|
|
80
72
|
"lang.name.ar": "Arabi",
|
|
81
73
|
"lang.name.de": "Deutsch",
|
|
82
74
|
"lang.name.it": "Italiano",
|
|
83
|
-
|
|
84
75
|
"recap.fallback_period": ".",
|
|
85
76
|
"recap.empty": "No hay nada que recordar todavia.",
|
|
86
|
-
|
|
87
77
|
"error_ui.severity.info": "INFO",
|
|
88
78
|
"error_ui.severity.warning": "ATENCION",
|
|
89
79
|
"error_ui.severity.error": "ERROR",
|
|
@@ -98,54 +88,63 @@
|
|
|
98
88
|
"error_ui.unknown.what": "Forge encontro un error interno (codigo desconocido).",
|
|
99
89
|
"error_ui.unknown.why": "El codigo {code} no esta en el catalogo. Es un bug.",
|
|
100
90
|
"error_ui.unknown.fix": "Abri un issue en https://github.com/yujinapp/yujin-forge/issues con el codigo + traceback.",
|
|
101
|
-
|
|
102
91
|
"error.cap_frontier_exhausted.what": "Se agoto el cap mensual de tokens del tier frontier (modelo grande).",
|
|
103
92
|
"error.cap_frontier_exhausted.why": "Tu plan {plan} permite hasta {cap} tokens/mes en frontier. Usaste {used}. Resetea al inicio del proximo mes UTC.",
|
|
104
93
|
"error.cap_frontier_exhausted.fix": "Pasa a BYOK Anthropic directo: bypassea el cap mensual del worker. Tu costo pasa a ser lo que cobra Anthropic.",
|
|
105
94
|
"error.cap_frontier_exhausted.cmd": "yf brain config --frontier-provider anthropic --frontier-model claude-opus-4-7",
|
|
106
|
-
|
|
107
95
|
"error.cap_eco_exhausted.what": "Se agoto el cap mensual de tokens del tier eco (modelo chico).",
|
|
108
96
|
"error.cap_eco_exhausted.why": "Tu plan {plan} permite hasta {cap} tokens/mes en eco. Usaste {used}. Resetea al inicio del proximo mes UTC.",
|
|
109
97
|
"error.cap_eco_exhausted.fix": "Pasa a BYOK directo o sube de plan. BYOK bypassea el cap del worker.",
|
|
110
98
|
"error.cap_eco_exhausted.cmd": "yf brain config --eco-provider google_ai --eco-model gemini-2.5-flash-lite",
|
|
111
|
-
|
|
112
99
|
"error.tier_not_in_plan.what": "El tier {tier} no esta habilitado en tu plan.",
|
|
113
100
|
"error.tier_not_in_plan.why": "Tu plan {plan} no incluye el tier {tier}. Probablemente sos free-public o tu license expiro.",
|
|
114
101
|
"error.tier_not_in_plan.fix": "Activa una licencia paga o pasa a BYOK directo (tu costo, sin cap del worker).",
|
|
115
102
|
"error.tier_not_in_plan.cmd": "yf license activate --key <jwt>",
|
|
116
|
-
|
|
117
103
|
"error.response_truncated.what": "La respuesta del modelo se corto antes de terminar.",
|
|
118
104
|
"error.response_truncated.why": "Limite managed_max_tokens_per_turn = {limit} tokens alcanzado a mitad del turno. El modelo paro de generar.",
|
|
119
105
|
"error.response_truncated.fix": "Subi el limite via yf limits. Aplica al proximo turno sin reiniciar el chat.",
|
|
120
106
|
"error.response_truncated.cmd": "yf limits set managed_max_tokens_per_turn 16384",
|
|
121
107
|
"error.response_truncated.banner": "[Respuesta truncada por max_tokens={max}. Subi el limite con: yf limits set managed_max_tokens_per_turn {suggested}]",
|
|
122
|
-
|
|
123
108
|
"error.modal_trace_stale.what": "El modal de aprobacion expiro o quedo huerfano.",
|
|
124
109
|
"error.modal_trace_stale.why": "El trace_id {trace_id} no tiene approval pendiente en el dispatcher. Probable race condition entre invoke y panel state, o cancel previo dejo el trace zombie.",
|
|
125
110
|
"error.modal_trace_stale.fix": "Reintenta el verbo desde el chat: arranca un nuevo trace limpio. Si persiste, corre yf doctor para chequear el panel.",
|
|
126
111
|
"error.modal_trace_stale.cmd": "yf doctor",
|
|
127
|
-
|
|
128
112
|
"error.byok_key_missing.what": "Falta la API key para el provider {provider}.",
|
|
129
113
|
"error.byok_key_missing.why": "Configuraste {provider} como provider del tier {tier} pero el slot byok_{slot} no esta en el Vault encriptado.",
|
|
130
114
|
"error.byok_key_missing.fix": "Configura la key con yf keys set (atomico, mode 0600, nunca se logguea).",
|
|
131
115
|
"error.byok_key_missing.cmd": "yf keys set {slot}",
|
|
132
|
-
|
|
133
116
|
"error.worker_unreachable.what": "No pude alcanzar el worker yujin.app.",
|
|
134
117
|
"error.worker_unreachable.why": "Network timeout o worker caido (HTTP {status}). Reintente {attempts} veces.",
|
|
135
118
|
"error.worker_unreachable.fix": "Chequea tu internet. Si esta OK, pasa temporalmente a BYOK directo para no depender del worker.",
|
|
136
119
|
"error.worker_unreachable.cmd": "yf brain config --frontier-provider anthropic",
|
|
137
|
-
|
|
138
120
|
"error.vault_decrypt_failed.what": "No pude desencriptar una clave del Vault.",
|
|
139
121
|
"error.vault_decrypt_failed.why": "La master key es incorrecta o el archivo del Vault esta corrupto. Puede pasar si moviste config entre maquinas sin migrar la master o por disk error.",
|
|
140
122
|
"error.vault_decrypt_failed.fix": "Traete la copia del server (re-encripta con tu master local) si tenes server backup activo.",
|
|
141
123
|
"error.vault_decrypt_failed.cmd": "yf keys setup --pull",
|
|
142
|
-
|
|
143
124
|
"error.shell_exec_rejected.what": "Rechazaste el modal R8 de yujin.shell.exec.",
|
|
144
125
|
"error.shell_exec_rejected.why": "El comando {command} se clasifico como {classification}. shell.exec siempre pide aprobacion por seguridad, aunque sea read-only.",
|
|
145
126
|
"error.shell_exec_rejected.fix": "Si el comando era read-only (yf projects active, git status, ls), usa el verb nativo equivalente. Si era necesario y lo rechazaste por error, reinvoca.",
|
|
146
|
-
|
|
147
127
|
"error.project_not_registered.what": "No hay proyecto adopter registrado.",
|
|
148
128
|
"error.project_not_registered.why": "El verb que invocaste requiere project root activo pero ~/.yujin-forge/projects.json no tiene entradas.",
|
|
149
129
|
"error.project_not_registered.fix": "Crea uno con yujin.project.init o registra uno existente con yf projects add.",
|
|
150
|
-
"error.project_not_registered.cmd": "yf projects scan"
|
|
130
|
+
"error.project_not_registered.cmd": "yf projects scan",
|
|
131
|
+
"panel.button.agents": "Agentes",
|
|
132
|
+
"panel.agents.title": "Agentes",
|
|
133
|
+
"panel.agents.subtitle": "Director + sub-agentes registrados en este proyecto",
|
|
134
|
+
"panel.agents.empty.title": "Aun no hay agentes",
|
|
135
|
+
"panel.agents.empty.body": "Corre `yf agent install --defaults` para registrar el Director y los 4 sub-agentes (Analista, Coder, Tester, Scaffolder).",
|
|
136
|
+
"panel.agents.legend.eco": "Eco",
|
|
137
|
+
"panel.agents.legend.managed": "Managed",
|
|
138
|
+
"panel.agents.legend.frontier": "Frontier",
|
|
139
|
+
"panel.agents.status.disabled": "Runtime de agentes no iniciado",
|
|
140
|
+
"panel.agents.event.running": "Corriendo",
|
|
141
|
+
"panel.agents.event.idle": "En espera",
|
|
142
|
+
"panel.agents.tick.live": "Conectado",
|
|
143
|
+
"panel.agents.tick.lost": "Conexion perdida",
|
|
144
|
+
"workflow.phase.i": "Triage e intencion",
|
|
145
|
+
"workflow.phase.ii": "Clarificacion (funcional + 4 NFR + bloques)",
|
|
146
|
+
"workflow.phase.iii": "Especificaciones (RFP + Arch + Design + aprobaciones)",
|
|
147
|
+
"workflow.phase.iv": "Bootstrap",
|
|
148
|
+
"workflow.phase.v": "Desarrollo por bloques",
|
|
149
|
+
"workflow.phase.vi": "Deploy + post-lanzamiento"
|
|
151
150
|
}
|
|
@@ -127,5 +127,24 @@
|
|
|
127
127
|
"error.project_not_registered.what": "Aucun projet adopter enregistre.",
|
|
128
128
|
"error.project_not_registered.why": "Le verb invoque necessite un project root actif mais ~/.yujin-forge/projects.json n'a pas d'entrees.",
|
|
129
129
|
"error.project_not_registered.fix": "Creez-en un avec yujin.project.init ou enregistrez un existant avec yf projects add.",
|
|
130
|
-
"error.project_not_registered.cmd": "yf projects scan"
|
|
130
|
+
"error.project_not_registered.cmd": "yf projects scan",
|
|
131
|
+
"panel.button.agents": "Agents",
|
|
132
|
+
"panel.agents.title": "Agents",
|
|
133
|
+
"panel.agents.subtitle": "Director et sous-agents enregistres dans ce projet",
|
|
134
|
+
"panel.agents.empty.title": "Aucun agent pour l'instant",
|
|
135
|
+
"panel.agents.empty.body": "Executez `yf agent install --defaults` pour enregistrer le Director et ses 4 sous-agents (Analyste, Coder, Tester, Scaffolder).",
|
|
136
|
+
"panel.agents.legend.eco": "Eco",
|
|
137
|
+
"panel.agents.legend.managed": "Managed",
|
|
138
|
+
"panel.agents.legend.frontier": "Frontier",
|
|
139
|
+
"panel.agents.status.disabled": "Runtime des agents non demarre",
|
|
140
|
+
"panel.agents.event.running": "En cours",
|
|
141
|
+
"panel.agents.event.idle": "En attente",
|
|
142
|
+
"panel.agents.tick.live": "Connecte",
|
|
143
|
+
"panel.agents.tick.lost": "Connexion perdue",
|
|
144
|
+
"workflow.phase.i": "Triage et intention",
|
|
145
|
+
"workflow.phase.ii": "Clarification (fonctionnel + 4 NFR + blocs)",
|
|
146
|
+
"workflow.phase.iii": "Specifications (RFP + Arch + Design + approbations)",
|
|
147
|
+
"workflow.phase.iv": "Bootstrap",
|
|
148
|
+
"workflow.phase.v": "Developpement par blocs",
|
|
149
|
+
"workflow.phase.vi": "Deploiement + post-lancement"
|
|
131
150
|
}
|
|
@@ -127,5 +127,24 @@
|
|
|
127
127
|
"error.project_not_registered.what": "कोई adopter प्रोजेक्ट पंजीकृत नहीं।",
|
|
128
128
|
"error.project_not_registered.why": "invoked verb को सक्रिय project root की आवश्यकता है लेकिन ~/.yujin-forge/projects.json में कोई entries नहीं हैं।",
|
|
129
129
|
"error.project_not_registered.fix": "yujin.project.init के साथ एक बनाएं या yf projects add के साथ एक मौजूदा पंजीकृत करें।",
|
|
130
|
-
"error.project_not_registered.cmd": "yf projects scan"
|
|
130
|
+
"error.project_not_registered.cmd": "yf projects scan",
|
|
131
|
+
"panel.button.agents": "एजेंट",
|
|
132
|
+
"panel.agents.title": "एजेंट",
|
|
133
|
+
"panel.agents.subtitle": "इस परियोजना में पंजीकृत निदेशक और उप-एजेंट",
|
|
134
|
+
"panel.agents.empty.title": "अभी तक कोई एजेंट नहीं",
|
|
135
|
+
"panel.agents.empty.body": "निदेशक और इसके 4 उप-एजेंटों (विश्लेषक, कोडर, परीक्षक, स्कैफोल्डर) को पंजीकृत करने के लिए `yf agent install --defaults` चलाएं।",
|
|
136
|
+
"panel.agents.legend.eco": "इको",
|
|
137
|
+
"panel.agents.legend.managed": "प्रबंधित",
|
|
138
|
+
"panel.agents.legend.frontier": "फ्रंटियर",
|
|
139
|
+
"panel.agents.status.disabled": "एजेंट रनटाइम प्रारंभ नहीं हुआ",
|
|
140
|
+
"panel.agents.event.running": "चल रहा है",
|
|
141
|
+
"panel.agents.event.idle": "निष्क्रिय",
|
|
142
|
+
"panel.agents.tick.live": "जुड़ा हुआ",
|
|
143
|
+
"panel.agents.tick.lost": "कनेक्शन खो गया",
|
|
144
|
+
"workflow.phase.i": "ट्रायेज और इरादा",
|
|
145
|
+
"workflow.phase.ii": "स्पष्टीकरण (कार्यात्मक + 4 NFR + ब्लॉक)",
|
|
146
|
+
"workflow.phase.iii": "विशिष्टीकरण (RFP + आर्क + डिज़ाइन + अनुमोदन)",
|
|
147
|
+
"workflow.phase.iv": "बूटस्ट्रैप",
|
|
148
|
+
"workflow.phase.v": "ब्लॉक विकास",
|
|
149
|
+
"workflow.phase.vi": "परिनियोजन + लॉन्च के बाद"
|
|
131
150
|
}
|
|
@@ -127,5 +127,24 @@
|
|
|
127
127
|
"error.project_not_registered.what": "Nessun progetto adopter registrato.",
|
|
128
128
|
"error.project_not_registered.why": "Il verb invocato richiede un project root attivo ma ~/.yujin-forge/projects.json non ha voci.",
|
|
129
129
|
"error.project_not_registered.fix": "Creane uno con yujin.project.init o registrane uno esistente con yf projects add.",
|
|
130
|
-
"error.project_not_registered.cmd": "yf projects scan"
|
|
130
|
+
"error.project_not_registered.cmd": "yf projects scan",
|
|
131
|
+
"panel.button.agents": "Agenti",
|
|
132
|
+
"panel.agents.title": "Agenti",
|
|
133
|
+
"panel.agents.subtitle": "Director e sub-agenti registrati in questo progetto",
|
|
134
|
+
"panel.agents.empty.title": "Nessun agente ancora",
|
|
135
|
+
"panel.agents.empty.body": "Esegui `yf agent install --defaults` per registrare il Director e i suoi 4 sub-agenti (Analista, Coder, Tester, Scaffolder).",
|
|
136
|
+
"panel.agents.legend.eco": "Eco",
|
|
137
|
+
"panel.agents.legend.managed": "Managed",
|
|
138
|
+
"panel.agents.legend.frontier": "Frontier",
|
|
139
|
+
"panel.agents.status.disabled": "Runtime degli agenti non avviato",
|
|
140
|
+
"panel.agents.event.running": "In esecuzione",
|
|
141
|
+
"panel.agents.event.idle": "Inattivo",
|
|
142
|
+
"panel.agents.tick.live": "Connesso",
|
|
143
|
+
"panel.agents.tick.lost": "Connessione persa",
|
|
144
|
+
"workflow.phase.i": "Triage e intento",
|
|
145
|
+
"workflow.phase.ii": "Chiarimento (funzionale + 4 NFR + blocchi)",
|
|
146
|
+
"workflow.phase.iii": "Specifiche (RFP + Arch + Design + approvazioni)",
|
|
147
|
+
"workflow.phase.iv": "Bootstrap",
|
|
148
|
+
"workflow.phase.v": "Sviluppo a blocchi",
|
|
149
|
+
"workflow.phase.vi": "Deploy + post-lancio"
|
|
131
150
|
}
|
|
@@ -127,5 +127,24 @@
|
|
|
127
127
|
"error.project_not_registered.what": "登録されたアダプタープロジェクトがありません。",
|
|
128
128
|
"error.project_not_registered.why": "呼び出した verb はアクティブな project root が必要ですが、~/.yujin-forge/projects.json にエントリがありません。",
|
|
129
129
|
"error.project_not_registered.fix": "yujin.project.init で作成するか、yf projects add で既存のものを登録してください。",
|
|
130
|
-
"error.project_not_registered.cmd": "yf projects scan"
|
|
130
|
+
"error.project_not_registered.cmd": "yf projects scan",
|
|
131
|
+
"panel.button.agents": "エージェント",
|
|
132
|
+
"panel.agents.title": "エージェント",
|
|
133
|
+
"panel.agents.subtitle": "このプロジェクトに登録されたディレクターとサブエージェント",
|
|
134
|
+
"panel.agents.empty.title": "エージェントはまだありません",
|
|
135
|
+
"panel.agents.empty.body": "`yf agent install --defaults` を実行して、ディレクターと4つのサブエージェント(アナリスト、コーダー、テスター、スキャフォルダー)を登録してください。",
|
|
136
|
+
"panel.agents.legend.eco": "エコ",
|
|
137
|
+
"panel.agents.legend.managed": "マネージド",
|
|
138
|
+
"panel.agents.legend.frontier": "フロンティア",
|
|
139
|
+
"panel.agents.status.disabled": "エージェントランタイムが開始されていません",
|
|
140
|
+
"panel.agents.event.running": "実行中",
|
|
141
|
+
"panel.agents.event.idle": "待機中",
|
|
142
|
+
"panel.agents.tick.live": "接続済み",
|
|
143
|
+
"panel.agents.tick.lost": "接続切断",
|
|
144
|
+
"workflow.phase.i": "トリアージと意図",
|
|
145
|
+
"workflow.phase.ii": "明確化(機能要件+4種NFR+ブロック計画)",
|
|
146
|
+
"workflow.phase.iii": "仕様(RFP+アーキ+デザイン+承認)",
|
|
147
|
+
"workflow.phase.iv": "ブートストラップ",
|
|
148
|
+
"workflow.phase.v": "ブロック実装",
|
|
149
|
+
"workflow.phase.vi": "デプロイと運用開始"
|
|
131
150
|
}
|
|
@@ -127,5 +127,24 @@
|
|
|
127
127
|
"error.project_not_registered.what": "Nao ha projeto adopter registrado.",
|
|
128
128
|
"error.project_not_registered.why": "O verb invocado requer project root ativo mas ~/.yujin-forge/projects.json nao tem entradas.",
|
|
129
129
|
"error.project_not_registered.fix": "Crie um com yujin.project.init ou registre um existente com yf projects add.",
|
|
130
|
-
"error.project_not_registered.cmd": "yf projects scan"
|
|
130
|
+
"error.project_not_registered.cmd": "yf projects scan",
|
|
131
|
+
"panel.button.agents": "Agentes",
|
|
132
|
+
"panel.agents.title": "Agentes",
|
|
133
|
+
"panel.agents.subtitle": "Director e sub-agentes registados neste projeto",
|
|
134
|
+
"panel.agents.empty.title": "Ainda nao ha agentes",
|
|
135
|
+
"panel.agents.empty.body": "Execute `yf agent install --defaults` para registar o Director e os 4 sub-agentes (Analista, Coder, Tester, Scaffolder).",
|
|
136
|
+
"panel.agents.legend.eco": "Eco",
|
|
137
|
+
"panel.agents.legend.managed": "Managed",
|
|
138
|
+
"panel.agents.legend.frontier": "Frontier",
|
|
139
|
+
"panel.agents.status.disabled": "Runtime de agentes nao iniciado",
|
|
140
|
+
"panel.agents.event.running": "A correr",
|
|
141
|
+
"panel.agents.event.idle": "Em espera",
|
|
142
|
+
"panel.agents.tick.live": "Ligado",
|
|
143
|
+
"panel.agents.tick.lost": "Ligacao perdida",
|
|
144
|
+
"workflow.phase.i": "Triagem e intencao",
|
|
145
|
+
"workflow.phase.ii": "Clarificacao (funcional + 4 NFR + blocos)",
|
|
146
|
+
"workflow.phase.iii": "Especificacoes (RFP + Arch + Design + aprovacoes)",
|
|
147
|
+
"workflow.phase.iv": "Bootstrap",
|
|
148
|
+
"workflow.phase.v": "Desenvolvimento por blocos",
|
|
149
|
+
"workflow.phase.vi": "Deploy + pos-lancamento"
|
|
131
150
|
}
|
|
@@ -127,5 +127,24 @@
|
|
|
127
127
|
"error.project_not_registered.what": "没有注册的adopter项目。",
|
|
128
128
|
"error.project_not_registered.why": "调用的verb需要活动的project root,但 ~/.yujin-forge/projects.json 没有条目。",
|
|
129
129
|
"error.project_not_registered.fix": "用 yujin.project.init 创建一个或用 yf projects add 注册一个现有的。",
|
|
130
|
-
"error.project_not_registered.cmd": "yf projects scan"
|
|
130
|
+
"error.project_not_registered.cmd": "yf projects scan",
|
|
131
|
+
"panel.button.agents": "智能体",
|
|
132
|
+
"panel.agents.title": "智能体",
|
|
133
|
+
"panel.agents.subtitle": "本项目已注册的总监和子智能体",
|
|
134
|
+
"panel.agents.empty.title": "尚无智能体",
|
|
135
|
+
"panel.agents.empty.body": "运行 `yf agent install --defaults` 来注册总监和4个子智能体(分析师、编码器、测试员、脚手架)。",
|
|
136
|
+
"panel.agents.legend.eco": "经济",
|
|
137
|
+
"panel.agents.legend.managed": "托管",
|
|
138
|
+
"panel.agents.legend.frontier": "前沿",
|
|
139
|
+
"panel.agents.status.disabled": "智能体运行时未启动",
|
|
140
|
+
"panel.agents.event.running": "运行中",
|
|
141
|
+
"panel.agents.event.idle": "空闲",
|
|
142
|
+
"panel.agents.tick.live": "已连接",
|
|
143
|
+
"panel.agents.tick.lost": "连接已断",
|
|
144
|
+
"workflow.phase.i": "分类与意图",
|
|
145
|
+
"workflow.phase.ii": "澄清(功能 + 4项NFR + 区块计划)",
|
|
146
|
+
"workflow.phase.iii": "规范(RFP + 架构 + 设计 + 审批)",
|
|
147
|
+
"workflow.phase.iv": "初始化",
|
|
148
|
+
"workflow.phase.v": "区块开发",
|
|
149
|
+
"workflow.phase.vi": "部署与发布后"
|
|
131
150
|
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# <Project name> — Sumi-Forge context
|
|
2
|
+
|
|
3
|
+
> Per-workspace context for the Sumi-Forge session building this
|
|
4
|
+
> product. Copy this template to `<workspace>/.forge/sumi-context.md`
|
|
5
|
+
> and update it as the project evolves. Cross-conversation patterns
|
|
6
|
+
> (doctrines, preferences) live in Sumi's global memory at
|
|
7
|
+
> `~/.claude/projects/.../memory/`, not here.
|
|
8
|
+
|
|
9
|
+
## Identity
|
|
10
|
+
|
|
11
|
+
- **Product name**:
|
|
12
|
+
- **Slug**:
|
|
13
|
+
- **Owner org**:
|
|
14
|
+
- **Repo**:
|
|
15
|
+
- **Distribution target**: e.g. `npm package @org/name + binary <name>`
|
|
16
|
+
- **License**:
|
|
17
|
+
|
|
18
|
+
## Current spec
|
|
19
|
+
|
|
20
|
+
- **Spec file**: e.g. `docs/SPEC.md`
|
|
21
|
+
- **Spec doc_id** (from `yf spec extract`):
|
|
22
|
+
- **Spec size**: e.g. 9 KB, 13 features, 10 acceptance criteria
|
|
23
|
+
- **Last ingested**: <date>
|
|
24
|
+
|
|
25
|
+
Summarize the spec in 3-5 bullets so future Sumi sessions can
|
|
26
|
+
load it from memory before re-reading the full doc.
|
|
27
|
+
|
|
28
|
+
## Active slice
|
|
29
|
+
|
|
30
|
+
- **Slice ID**: e.g. S2-vault-encryption-at-rest
|
|
31
|
+
- **Goal**: one sentence
|
|
32
|
+
- **Acceptance**: what passes the slice (test names + spec
|
|
33
|
+
criterion numbers)
|
|
34
|
+
- **Started**: <date>
|
|
35
|
+
- **Status**: planning / in-progress / blocked / done
|
|
36
|
+
|
|
37
|
+
## Recent decisions
|
|
38
|
+
|
|
39
|
+
Append a one-line entry per decision. Newest at top. Format:
|
|
40
|
+
`<date>: <decision> -- <one-line rationale>`
|
|
41
|
+
|
|
42
|
+
## Open clarifications
|
|
43
|
+
|
|
44
|
+
Anything waiting on operator input. Format:
|
|
45
|
+
`Q: <question> — asked <date>`
|
|
46
|
+
|
|
47
|
+
## Test baseline
|
|
48
|
+
|
|
49
|
+
- Last `npm test`: <pass count>/<total> green on <date>
|
|
50
|
+
- Last `npm run typecheck`: clean / N errors
|
|
51
|
+
- Last `npm run prepublishOnly`: passed / failed
|
|
52
|
+
|
|
53
|
+
## File map
|
|
54
|
+
|
|
55
|
+
Optional: where the major modules live in this workspace, so a
|
|
56
|
+
fresh Sumi session does not need to Glob from scratch. Format:
|
|
57
|
+
`<area>: <path glob>` (e.g. `voice parsing: src/voice/*.ts`).
|