trackops 1.0.1 → 2.0.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 (83) hide show
  1. package/README.md +292 -272
  2. package/bin/trackops.js +108 -50
  3. package/lib/config.js +267 -38
  4. package/lib/control.js +534 -480
  5. package/lib/env.js +244 -0
  6. package/lib/i18n.js +61 -53
  7. package/lib/init.js +170 -47
  8. package/lib/locale.js +63 -0
  9. package/lib/opera-bootstrap.js +1075 -0
  10. package/lib/opera.js +524 -125
  11. package/lib/preferences.js +74 -0
  12. package/lib/registry.js +27 -13
  13. package/lib/release.js +56 -0
  14. package/lib/resources.js +42 -0
  15. package/lib/runtime-state.js +144 -0
  16. package/lib/server.js +1004 -521
  17. package/lib/skills.js +148 -124
  18. package/lib/workspace.js +260 -0
  19. package/locales/en.json +418 -132
  20. package/locales/es.json +418 -132
  21. package/package.json +8 -9
  22. package/scripts/postinstall-locale.js +21 -0
  23. package/scripts/skills-marketplace-smoke.js +124 -0
  24. package/scripts/smoke-tests.js +570 -0
  25. package/scripts/sync-skill-version.js +21 -0
  26. package/scripts/validate-skill.js +89 -0
  27. package/skills/trackops/SKILL.md +89 -0
  28. package/skills/trackops/agents/openai.yaml +3 -0
  29. package/skills/trackops/references/activation.md +73 -0
  30. package/skills/trackops/references/troubleshooting.md +49 -0
  31. package/skills/trackops/references/workflow.md +26 -0
  32. package/skills/trackops/scripts/bootstrap-trackops.js +203 -0
  33. package/skills/trackops/skill.json +29 -0
  34. package/templates/opera/agent.md +10 -9
  35. package/templates/opera/architecture/dependency-graph.md +24 -0
  36. package/templates/opera/architecture/runtime-automation.md +24 -0
  37. package/templates/opera/architecture/runtime-operations.md +34 -0
  38. package/templates/opera/en/agent.md +27 -0
  39. package/templates/opera/en/architecture/dependency-graph.md +24 -0
  40. package/templates/opera/en/architecture/runtime-automation.md +24 -0
  41. package/templates/opera/en/architecture/runtime-operations.md +34 -0
  42. package/templates/opera/en/genesis.md +79 -0
  43. package/templates/opera/en/references/autonomy-and-recovery.md +23 -0
  44. package/templates/opera/en/references/opera-cycle.md +62 -0
  45. package/templates/opera/en/registry.md +28 -0
  46. package/templates/opera/en/reviews/delivery-audit.md +18 -0
  47. package/templates/opera/en/reviews/integration-audit.md +18 -0
  48. package/templates/opera/en/router.md +49 -0
  49. package/templates/opera/genesis.md +79 -94
  50. package/templates/opera/reviews/delivery-audit.md +18 -0
  51. package/templates/opera/reviews/integration-audit.md +18 -0
  52. package/templates/opera/router.md +15 -5
  53. package/templates/skills/changelog-updater/locales/en/SKILL.md +11 -0
  54. package/templates/skills/commiter/locales/en/SKILL.md +11 -0
  55. package/templates/skills/opera-contract-auditor/SKILL.md +38 -0
  56. package/templates/skills/opera-contract-auditor/locales/en/SKILL.md +38 -0
  57. package/templates/skills/opera-policy-guard/SKILL.md +26 -0
  58. package/templates/skills/opera-policy-guard/locales/en/SKILL.md +26 -0
  59. package/templates/skills/project-starter-skill/SKILL.md +89 -164
  60. package/templates/skills/project-starter-skill/locales/en/SKILL.md +104 -0
  61. package/ui/css/panels.css +956 -953
  62. package/ui/index.html +1 -1
  63. package/ui/js/api.js +211 -194
  64. package/ui/js/app.js +200 -199
  65. package/ui/js/i18n.js +14 -0
  66. package/ui/js/onboarding.js +439 -437
  67. package/ui/js/state.js +130 -129
  68. package/ui/js/utils.js +175 -172
  69. package/ui/js/views/board.js +255 -254
  70. package/ui/js/views/execution.js +256 -256
  71. package/ui/js/views/insights.js +340 -339
  72. package/ui/js/views/overview.js +366 -361
  73. package/ui/js/views/settings.js +340 -202
  74. package/ui/js/views/sidebar.js +131 -132
  75. package/ui/js/views/skills.js +163 -162
  76. package/ui/js/views/tasks.js +406 -405
  77. package/ui/js/views/topbar.js +239 -183
  78. package/templates/etapa/agent.md +0 -26
  79. package/templates/etapa/genesis.md +0 -94
  80. package/templates/etapa/references/autonomy-and-recovery.md +0 -117
  81. package/templates/etapa/references/etapa-cycle.md +0 -193
  82. package/templates/etapa/registry.md +0 -28
  83. package/templates/etapa/router.md +0 -39
package/locales/en.json CHANGED
@@ -1,142 +1,428 @@
1
- {
2
- "status.pending": "Pending",
3
- "status.in_progress": "In progress",
4
- "status.in_review": "In review",
5
- "status.blocked": "Blocked",
6
- "status.completed": "Completed",
7
- "status.cancelled": "Cancelled",
8
-
9
- "doc.header.taskPlan": "{projectName} — Task Plan (task_plan.md)",
10
- "doc.header.progress": "{projectName} — Progress Log (progress.md)",
11
- "doc.header.findings": "{projectName} — Findings Library (findings.md)",
12
- "doc.autogenerated": "AUTO-GENERATED from `project_control.json`. Do not edit manually.",
13
-
14
- "doc.section.operativeState": "Operative State",
15
- "doc.section.externalDecisions": "Pending external decisions",
16
- "doc.section.readyTasks": "Next ready tasks",
17
- "doc.section.currentState": "Current State",
18
- "doc.section.executionSummary": "Execution Summary",
19
- "doc.section.activeTasks": "Active tasks",
20
- "doc.section.reviewTasks": "Tasks in review",
21
- "doc.section.activeBlockers": "Active blockers",
22
- "doc.section.recentActivity": "Recent activity",
23
- "doc.section.milestones": "Registered Milestones",
24
- "doc.section.openFindings": "Open Findings",
25
- "doc.section.resolvedFindings": "Resolved Findings",
26
- "doc.section.phase": "Phase {phaseId} — {phaseLabel}",
27
-
28
- "doc.label.activePhase": "Active phase",
29
- "doc.label.currentFocus": "Current focus",
30
- "doc.label.deliveryTarget": "Delivery target",
31
- "doc.label.blockers": "Blockers",
32
- "doc.label.nextStep": "Recommended next step",
33
- "doc.label.phase": "Phase",
34
- "doc.label.lastTest": "Last test",
35
- "doc.label.nextStepShort": "Next step",
36
- "doc.label.lastUpdate": "Last operational update",
37
- "doc.label.progress": "Progress: {completed}/{total} required tasks completed",
38
- "doc.label.phaseActive": "Active",
39
- "doc.label.phaseClosed": "Closed",
40
- "doc.label.phasePending": "Pending",
41
- "doc.label.totalTasks": "Total tasks",
42
- "doc.label.completedTasks": "Completed",
43
- "doc.label.inProgressTasks": "In progress",
44
- "doc.label.inReviewTasks": "In review",
45
- "doc.label.pendingTasks": "Pending",
46
- "doc.label.blockedTasks": "Blocked",
47
- "doc.label.findingOpen": "open",
48
- "doc.label.findingResolved": "resolved",
49
- "doc.label.findingStatus": "Status",
50
- "doc.label.findingDetail": "Detail",
51
- "doc.label.findingImpact": "Impact",
52
-
53
- "doc.label.noBlockers": "None",
54
- "doc.label.noOpenTasks": "No open tasks",
55
- "doc.label.noReadyTasks": "No ready tasks; check blockers.",
56
- "doc.label.noTasks": "No registered tasks",
57
- "doc.label.noFindings": "No open findings.",
58
- "doc.label.noResolvedFindings": "No resolved findings on record.",
59
- "doc.label.noDecisions": "None",
60
- "doc.label.noActiveTasks": "No tasks in progress at the moment.",
61
- "doc.label.noReviewTasks": "No tasks in review.",
62
- "doc.label.noActiveBlockers": "No active blockers.",
63
- "doc.label.noHistory": "No recorded movements.",
64
-
65
- "cli.runtimeUpdated": "Runtime updated at {path}",
66
- "cli.docsSynced": "Operational documentation synced.",
67
- "cli.taskUpdated": "Task '{taskId}' updated with action '{action}'.",
68
- "cli.taskNotFound": "Task '{taskId}' not found.",
69
- "cli.actionNotSupported": "Unsupported action: {action}",
70
- "cli.mustProvideActionAndId": "You must specify action and task id.",
71
- "cli.noReadyTasks": "No ready tasks. Check blockers and dependencies.",
72
- "cli.hooksInstalled": "Git hooks installed in .githooks",
73
- "cli.hooksError": "Could not configure core.hooksPath.",
74
- "cli.noProjectFound": "No project_control.json found in this directory or parents.",
75
- "cli.emptyNote": "Empty note.",
76
- "cli.undocumentedBlocker": "Undocumented blocker.",
77
-
78
- "cli.status.title": "{projectName} — Operational Control",
79
- "cli.status.focus": "Focus: {focus}",
80
- "cli.status.activePhase": "Active phase: {phaseId} — {phaseLabel}",
81
- "cli.status.tasks": "Tasks: {completed} completed, {inProgress} in progress, {inReview} in review, {pending} pending, {blocked} blocked",
82
- "cli.status.readyTasks": "Next ready tasks:",
83
- "cli.status.noReadyTasks": "No ready tasks; check blockers or dependencies.",
84
- "cli.status.blockers": "Blockers:",
85
- "cli.status.noBlockers": "No blockers.",
86
- "cli.status.decisions": "External decisions:",
87
- "cli.status.noDecisions": "None.",
88
- "cli.status.repo": "Repository:",
89
- "cli.status.branch": "Branch: {branch} | Tree: {treeStatus}",
90
- "cli.status.treeClean": "clean",
91
- "cli.status.treeDirty": "dirty ({staged} staged, {unstaged} unstaged, {untracked} untracked)",
92
- "cli.status.lastCommit": "Last commit: {hash} {subject}",
93
- "cli.status.divergence": "Divergence: ahead {ahead}, behind {behind}",
94
- "cli.status.runtime": "Runtime: {path}",
95
- "cli.status.docsSynced": "Docs synced: {status}",
96
- "cli.status.docsSyncedYes": "yes",
97
- "cli.status.docsSyncedNo": "no ({files})",
98
-
99
- "cli.next.phase": "phase",
100
- "cli.next.priority": "priority",
101
- "cli.next.stream": "stream",
102
- "cli.next.summary": "summary",
103
-
1
+ {
2
+ "status.pending": "Pending",
3
+ "status.in_progress": "In progress",
4
+ "status.in_review": "In review",
5
+ "status.blocked": "Blocked",
6
+ "status.completed": "Completed",
7
+ "status.cancelled": "Cancelled",
8
+
9
+ "doc.header.taskPlan": "{projectName} — Task Plan (task_plan.md)",
10
+ "doc.header.progress": "{projectName} — Progress Log (progress.md)",
11
+ "doc.header.findings": "{projectName} — Findings Library (findings.md)",
12
+ "doc.autogenerated": "AUTO-GENERATED from `project_control.json`. Do not edit manually.",
13
+
14
+ "doc.section.operativeState": "Operative State",
15
+ "doc.section.externalDecisions": "Pending external decisions",
16
+ "doc.section.readyTasks": "Next ready tasks",
17
+ "doc.section.currentState": "Current State",
18
+ "doc.section.executionSummary": "Execution Summary",
19
+ "doc.section.activeTasks": "Active tasks",
20
+ "doc.section.reviewTasks": "Tasks in review",
21
+ "doc.section.activeBlockers": "Active blockers",
22
+ "doc.section.recentActivity": "Recent activity",
23
+ "doc.section.milestones": "Registered Milestones",
24
+ "doc.section.openFindings": "Open Findings",
25
+ "doc.section.resolvedFindings": "Resolved Findings",
26
+ "doc.section.phase": "Phase {phaseId} — {phaseLabel}",
27
+
28
+ "doc.label.activePhase": "Active phase",
29
+ "doc.label.currentFocus": "Current focus",
30
+ "doc.label.deliveryTarget": "Delivery target",
31
+ "doc.label.blockers": "Blockers",
32
+ "doc.label.nextStep": "Recommended next step",
33
+ "doc.label.phase": "Phase",
34
+ "doc.label.lastTest": "Last test",
35
+ "doc.label.nextStepShort": "Next step",
36
+ "doc.label.lastUpdate": "Last operational update",
37
+ "doc.label.progress": "Progress: {completed}/{total} required tasks completed",
38
+ "doc.label.phaseActive": "Active",
39
+ "doc.label.phaseClosed": "Closed",
40
+ "doc.label.phasePending": "Pending",
41
+ "doc.label.totalTasks": "Total tasks",
42
+ "doc.label.completedTasks": "Completed",
43
+ "doc.label.inProgressTasks": "In progress",
44
+ "doc.label.inReviewTasks": "In review",
45
+ "doc.label.pendingTasks": "Pending",
46
+ "doc.label.blockedTasks": "Blocked",
47
+ "doc.label.findingOpen": "open",
48
+ "doc.label.findingResolved": "resolved",
49
+ "doc.label.findingStatus": "Status",
50
+ "doc.label.findingDetail": "Detail",
51
+ "doc.label.findingImpact": "Impact",
52
+
53
+ "doc.label.noBlockers": "None",
54
+ "doc.label.noOpenTasks": "No open tasks",
55
+ "doc.label.noReadyTasks": "No ready tasks; check blockers.",
56
+ "doc.label.noTasks": "No registered tasks",
57
+ "doc.label.noFindings": "No open findings.",
58
+ "doc.label.noResolvedFindings": "No resolved findings on record.",
59
+ "doc.label.noDecisions": "None",
60
+ "doc.label.noActiveTasks": "No tasks in progress at the moment.",
61
+ "doc.label.noReviewTasks": "No tasks in review.",
62
+ "doc.label.noActiveBlockers": "No active blockers.",
63
+ "doc.label.noHistory": "No recorded movements.",
64
+
65
+ "cli.runtimeUpdated": "Runtime updated at {path}",
66
+ "cli.docsSynced": "Operational documentation synced.",
67
+ "cli.taskUpdated": "Task '{taskId}' updated with action '{action}'.",
68
+ "cli.taskNotFound": "Task '{taskId}' not found.",
69
+ "cli.actionNotSupported": "Unsupported action: {action}",
70
+ "cli.mustProvideActionAndId": "You must specify action and task id.",
71
+ "cli.noReadyTasks": "No ready tasks. Check blockers and dependencies.",
72
+ "cli.hooksInstalled": "Git hooks installed in .githooks",
73
+ "cli.hooksError": "Could not configure core.hooksPath.",
74
+ "cli.noProjectFound": "No project_control.json found in this directory or parents.",
75
+ "cli.emptyNote": "Empty note.",
76
+ "cli.undocumentedBlocker": "Undocumented blocker.",
77
+
78
+ "cli.status.title": "{projectName} — Operational Control",
79
+ "cli.status.focus": "Focus: {focus}",
80
+ "cli.status.activePhase": "Active phase: {phaseId} — {phaseLabel}",
81
+ "cli.status.tasks": "Tasks: {completed} completed, {inProgress} in progress, {inReview} in review, {pending} pending, {blocked} blocked",
82
+ "cli.status.readyTasks": "Next ready tasks:",
83
+ "cli.status.noReadyTasks": "No ready tasks; check blockers or dependencies.",
84
+ "cli.status.blockers": "Blockers:",
85
+ "cli.status.noBlockers": "No blockers.",
86
+ "cli.status.decisions": "External decisions:",
87
+ "cli.status.noDecisions": "None.",
88
+ "cli.status.repo": "Repository:",
89
+ "cli.status.branch": "Branch: {branch} | Tree: {treeStatus}",
90
+ "cli.status.treeClean": "clean",
91
+ "cli.status.treeDirty": "dirty ({staged} staged, {unstaged} unstaged, {untracked} untracked)",
92
+ "cli.status.lastCommit": "Last commit: {hash} {subject}",
93
+ "cli.status.divergence": "Divergence: ahead {ahead}, behind {behind}",
94
+ "cli.status.runtime": "Runtime: {path}",
95
+ "cli.status.docsSynced": "Docs synced: {status}",
96
+ "cli.status.docsSyncedYes": "yes",
97
+ "cli.status.docsSyncedNo": "no ({files})",
98
+
99
+ "cli.next.phase": "phase",
100
+ "cli.next.priority": "priority",
101
+ "cli.next.stream": "stream",
102
+ "cli.next.summary": "summary",
103
+
104
104
  "cli.help.title": "Project operational control",
105
105
  "cli.help.usage": "Usage:",
106
-
107
- "server.ready": "Ops dashboard ready at http://{host}:{port}",
108
- "server.defaultProject": "Default project: {name} ({id})",
109
- "server.titleRequired": "Title is required.",
110
- "server.taskCreatedNote": "Task created from dashboard.",
111
- "server.taskEditedNote": "Task edited from dashboard.",
112
- "server.payloadTooLarge": "Payload too large (>{limit}).",
113
- "server.invalidJson": "Invalid JSON.",
114
- "server.sessionNotFound": "Session not found.",
115
- "server.noActiveSession": "No active session to start stream.",
116
- "server.commandRequired": "A command is required.",
117
- "server.projectNotResolved": "Could not resolve project.",
118
-
119
- "init.welcome": "Project initialized with trackops.",
120
- "init.opsExists": "Ops is already installed in this project.",
121
- "init.created": "Created {file}",
122
- "init.updated": "Updated {file}",
123
- "init.registered": "Project registered in the global portfolio.",
124
- "init.defaultFocus": "Operational project bootstrap",
125
- "init.defaultTarget": "Project managed with trackops",
126
- "init.defaultTaskTitle": "Set up project with trackops",
127
- "init.defaultTaskSummary": "Verify initial structure, adjust phases and confirm operational integration.",
128
-
106
+ "cli.help.commands": "Commands:",
107
+ "cli.help.init.desc": "Initialize TrackOps in the current directory.",
108
+ "cli.help.workspace.desc": "Show or migrate the current workspace layout.",
109
+ "cli.help.env.desc": "Audit or sync the workspace .env contract.",
110
+ "cli.help.release.desc": "Publish the configured app/ branch snapshot.",
111
+ "cli.help.version.desc": "Print the installed TrackOps version.",
112
+ "cli.help.status.desc": "Show project state: focus, active phase, ready tasks, blockers, repo.",
113
+ "cli.help.next.desc": "Prioritized queue of next executable tasks.",
114
+ "cli.help.sync.desc": "Regenerate task_plan.md, progress.md and findings.md from project_control.json.",
115
+ "cli.help.dashboard.desc": "Launch the local web dashboard on a free port and print local/network URLs.",
116
+ "cli.help.refreshRepo.desc": "Update the repo runtime snapshot with git state.",
117
+ "cli.help.installHooks.desc": "Configure git core.hooksPath to use the TrackOps hooks directory.",
118
+ "cli.help.register.desc": "Register the current project in the multi-project portfolio.",
119
+ "cli.help.projects.desc": "List registered projects.",
120
+ "cli.help.task.desc": "Actions: start, review, complete, block, pending, cancel, note.",
121
+ "cli.help.opera.desc": "Manage OPERA.",
122
+ "cli.help.opera.upgradeHint": "Upgrade: trackops opera upgrade --stable [--reset]",
123
+ "cli.help.locale.desc": "Show or update the global TrackOps language.",
124
+ "cli.help.doctor.desc": "Explain the effective language source for this machine/project.",
125
+ "cli.help.skill.desc": "Manage skills.",
126
+ "cli.help.help.desc": "Show this help.",
127
+ "cli.help.globalWorkflow": "Global agent workflow:",
128
+ "cli.help.globalWorkflow.line1": "Install with 'npx skills add Baxahaun/trackops'",
129
+ "cli.help.globalWorkflow.line2": "and the global/agent flags you need; then use 'trackops init' and 'trackops opera install' explicitly inside each project.",
130
+ "cli.usage.workspace": "Usage: trackops workspace <status|migrate>",
131
+ "cli.usage.env": "Usage: trackops env <status|sync>",
132
+ "cli.usage.opera": "Usage: trackops opera <install|bootstrap|handoff|status|configure|upgrade>",
133
+ "cli.usage.skill": "Usage: trackops skill <install|list|remove|catalog> [name]",
134
+ "cli.usage.locale": "Usage: trackops locale <get|set> [es|en]",
135
+ "cli.usage.doctor": "Usage: trackops doctor locale",
136
+ "cli.error.unknownCommand": "Unknown command: {command}",
137
+ "cli.error.runHelp": "Run 'trackops help' for usage.",
138
+ "cli.error.noWorkspace": "No TrackOps workspace found in this directory or any parent.",
139
+ "locale.effective": "Effective language",
140
+ "locale.source": "Source",
141
+ "locale.global": "Global language",
142
+ "locale.project": "Project language",
143
+ "locale.env": "Environment language",
144
+ "locale.system": "System language",
145
+ "locale.runtimeFile": "Runtime file",
146
+ "locale.none": "none",
147
+ "locale.invalid": "Invalid locale: {value}.",
148
+ "locale.updated": "Global language updated to {locale}.",
149
+ "locale.source.explicit": "explicit flag",
150
+ "locale.source.project": "project",
151
+ "locale.source.global": "global",
152
+ "locale.source.env": "environment",
153
+ "locale.source.system": "system",
154
+ "locale.source.prompt": "prompt",
155
+ "locale.source.manual": "manual",
156
+
157
+ "server.ready": "Ops dashboard ready at http://{host}:{port}",
158
+ "server.bannerTitle": "Serving!",
159
+ "server.localUrl": "- Local: {url}",
160
+ "server.networkUrl": "- Network: {url}",
161
+ "server.networkAltUrl": "- Network alt: {url}",
162
+ "server.copiedToClipboard": "Copied local address to clipboard!",
163
+ "server.clipboardUnavailable": "Could not copy the local address to the clipboard.",
164
+ "server.portFallback": "Requested port {requestedPort} was busy; using {actualPort}.",
165
+ "server.portBusyStrict": "Requested port {port} is already in use.",
166
+ "server.portSearchExhausted": "Could not find a free port starting at {port} after {limit} attempts.",
167
+ "server.invalidPort": "Invalid port: {value}.",
168
+ "server.noNetworkAddress": "- Network: no usable external address detected.",
169
+ "server.defaultProject": "Default project: {name} ({id})",
170
+ "server.titleRequired": "Title is required.",
171
+ "server.taskCreatedNote": "Task created from dashboard.",
172
+ "server.taskEditedNote": "Task edited from dashboard.",
173
+ "server.payloadTooLarge": "Payload too large (>{limit}).",
174
+ "server.invalidJson": "Invalid JSON.",
175
+ "server.sessionNotFound": "Session not found.",
176
+ "server.noActiveSession": "No active session to start stream.",
177
+ "server.commandRequired": "A command is required.",
178
+ "server.projectNotResolved": "Could not resolve project.",
179
+ "server.invalidLocale": "Invalid locale: {value}.",
180
+
181
+ "init.welcome": "Project initialized with trackops.",
182
+ "init.opsExists": "Ops is already installed in this project.",
183
+ "init.created": "Created {file}",
184
+ "init.updated": "Updated {file}",
185
+ "init.registered": "Project registered in the global portfolio.",
186
+ "init.defaultFocus": "Operational project bootstrap",
187
+ "init.defaultTarget": "Project managed with trackops",
188
+ "init.defaultTaskTitle": "Set up project with trackops",
189
+ "init.defaultTaskSummary": "Verify initial structure, adjust phases and confirm operational integration.",
190
+
129
191
  "opera.installed": "OPERA methodology installed (v{version}).",
130
192
  "opera.alreadyInstalled": "OPERA is already installed in this project (v{version}).",
131
193
  "opera.notInstalled": "OPERA is not installed in this project.",
132
194
  "opera.upgraded": "OPERA upgraded to v{version}.",
133
195
  "opera.primitiveDetected": "Existing OPERA installation detected (not managed by Ops).",
134
-
135
- "skill.installed": "Skill '{name}' installed.",
136
- "skill.removed": "Skill '{name}' uninstalled.",
137
- "skill.notFound": "Skill '{name}' not found in the catalog.",
138
- "skill.alreadyInstalled": "Skill '{name}' is already installed.",
196
+ "opera.status.version": "OPERA v{version}",
197
+ "opera.status.installed": " Installed: {value}",
198
+ "opera.status.skills": " Skills: {value}",
199
+ "opera.status.locale": " Locale: {locale} ({source})",
200
+ "opera.status.legacy": " Legacy: {value}",
201
+ "opera.status.contractVersion": " Contract version: {value}",
202
+ "opera.status.contractReadiness": " Contract readiness: {value}",
203
+ "opera.status.bootstrap": " Bootstrap: {value}",
204
+ "opera.status.mode": " Mode: {value}",
205
+ "opera.status.route": " Route: {value}",
206
+ "opera.status.ownership": " Ownership: {value}",
207
+ "opera.status.missing": " Missing: {value}",
208
+ "opera.status.resume": " Resume: trackops opera bootstrap --resume",
209
+ "opera.status.handoff": " Handoff: {value}",
210
+ "opera.status.qualityReport": " Quality report: {value}",
211
+ "opera.status.structure": " Structure:",
212
+ "opera.configure.invalidPhases": "Invalid phases JSON.",
213
+ "opera.configure.updated": "Configuration updated.",
214
+ "opera.upgrade.runInstallFirst": "Run 'trackops opera install' first.",
215
+ "opera.upgrade.usage": "Usage: trackops opera upgrade --stable [--reset]",
216
+ "opera.upgrade.legacyUnsupported": "Legacy OPERA project detected. Run 'trackops opera upgrade --stable --reset' to move it to the current stable model.",
217
+ "opera.upgrade.backup": "Backup: {path}",
218
+ "postinstall.localeSet": "TrackOps set the language to '{locale}' ({source}).",
219
+
220
+ "skill.installed": "Skill '{name}' installed.",
221
+ "skill.removed": "Skill '{name}' uninstalled.",
222
+ "skill.notFound": "Skill '{name}' not found in the catalog.",
223
+ "skill.alreadyInstalled": "Skill '{name}' is already installed.",
139
224
  "skill.notInstalled": "Skill '{name}' is not installed.",
140
225
  "skill.catalogTitle": "Available skills:",
141
- "skill.listTitle": "Installed skills:"
226
+ "skill.listTitle": "Installed skills:",
227
+
228
+ "cli.status.bootstrap": "Bootstrap: {status} | Locale: {locale}",
229
+
230
+ "bootstrap.header": "OPERA bootstrap",
231
+ "bootstrap.subtitle": "Classify the user and the project first. TrackOps will decide whether to continue in the terminal or route discovery to the agent.",
232
+ "bootstrap.question.technicalLevel": "User technical level",
233
+ "bootstrap.question.projectState": "Current project state",
234
+ "bootstrap.question.docsState": "Available documentation",
235
+ "bootstrap.question.decisionOwnership": "Who should own key decisions",
236
+ "bootstrap.question.problemStatement": "Main problem to solve",
237
+ "bootstrap.question.targetUser": "Primary target user",
238
+ "bootstrap.question.desiredOutcome": "Desired outcome",
239
+ "bootstrap.question.externalServices": "External services (comma separated)",
240
+ "bootstrap.question.sourceOfTruth": "Source of truth",
241
+ "bootstrap.question.payload": "Delivery payload / target",
242
+ "bootstrap.question.behaviorRules": "Behavior rules (semicolon separated)",
243
+ "bootstrap.question.inputSchema": "Input schema JSON",
244
+ "bootstrap.question.outputSchema": "Output schema JSON",
245
+ "bootstrap.question.invariants": "Architectural invariants (semicolon separated)",
246
+ "bootstrap.question.pipeline": "Pipeline steps (semicolon separated)",
247
+ "bootstrap.question.templates": "Template files (comma separated)",
248
+ "bootstrap.question.repoTasks": "Include optional repo tasks? [y/n]",
249
+ "bootstrap.completed": "OPERA bootstrap completed.",
250
+ "bootstrap.pending": "OPERA bootstrap saved as pending. Resume with 'trackops opera bootstrap --resume'.",
251
+ "bootstrap.awaitingAgent": "OPERA bootstrap has been routed to the agent. Complete the handoff and resume with 'trackops opera bootstrap --resume'.",
252
+ "bootstrap.handoffFile": "Handoff file",
253
+ "bootstrap.infer.envSourceHint": "Environment files detected",
254
+ "bootstrap.noneDefined": "Not defined yet.",
255
+ "bootstrap.pendingValue": "Pending definition.",
256
+ "bootstrap.servicePending": "pending",
257
+ "bootstrap.defaultFocus": "Complete OPERA bootstrap",
258
+ "bootstrap.defaultTarget": "Target delivery pending definition",
259
+ "bootstrap.blocker.missingData": "Core bootstrap data is still missing.",
260
+ "bootstrap.blocker.awaitingAgent": "Waiting for the agent handoff output.",
261
+ "bootstrap.history.seeded": "Seeded by OPERA bootstrap.",
262
+ "bootstrap.acceptance.discovery": "Discovery questions answered.",
263
+ "bootstrap.acceptance.schema": "Input/output schema defined in genesis.md.",
264
+ "bootstrap.acceptance.rules": "Behavior rules documented.",
265
+ "bootstrap.acceptance.plan": "Plan reviewed and accepted.",
266
+ "bootstrap.acceptance.intake": "The agent generated ops/bootstrap/intake.json.",
267
+ "bootstrap.acceptance.specDossier": "The agent generated ops/bootstrap/spec-dossier.md.",
268
+ "bootstrap.acceptance.resume": "OPERA ingested the context and continued.",
269
+ "bootstrap.acceptance.env": "Required credentials verified.",
270
+ "bootstrap.acceptance.tests": "Connectivity checks passing.",
271
+ "bootstrap.acceptance.shape": "External shapes validated against genesis.md.",
272
+ "bootstrap.acceptance.findings": "Findings documented.",
273
+ "bootstrap.acceptance.sops": "SOPs documented.",
274
+ "bootstrap.acceptance.tools": "Core tools implemented.",
275
+ "bootstrap.acceptance.graph": "Pipeline graph documented.",
276
+ "bootstrap.acceptance.integration": "Integration tests passing.",
277
+ "bootstrap.acceptance.outputs": "Outputs validated against templates.",
278
+ "bootstrap.acceptance.delivery": "Delivery format reviewed.",
279
+ "bootstrap.acceptance.ui": "UI review completed when applicable.",
280
+ "bootstrap.acceptance.tmp": ".tmp cleaned.",
281
+ "bootstrap.acceptance.deploy": "Deployment completed.",
282
+ "bootstrap.acceptance.triggers": "Triggers configured.",
283
+ "bootstrap.acceptance.smoke": "Smoke test passing.",
284
+ "bootstrap.task.bootstrap.title": "Complete OPERA bootstrap",
285
+ "bootstrap.task.bootstrap.summary": "Turn the installed OPERA structure into a project-specific operating model.",
286
+ "bootstrap.task.bootstrap.handoffSummary": "Prepare the agent handoff so an idea or partial specification becomes structured operational context.",
287
+ "bootstrap.task.prove.title": "Validate integrations",
288
+ "bootstrap.task.prove.summary": "Verify credentials, connectivity, and response shapes before building further.",
289
+ "bootstrap.task.structure.title": "Structure the system",
290
+ "bootstrap.task.structure.summary": "Document SOPs, implement tools, and capture the dependency graph.",
291
+ "bootstrap.task.refine.title": "Refine delivery",
292
+ "bootstrap.task.refine.summary": "Validate outputs against templates and polish the delivery format.",
293
+ "bootstrap.task.automate.title": "Automate runtime",
294
+ "bootstrap.task.automate.summary": "Configure deployment, triggers, and smoke validation.",
295
+ "bootstrap.task.repoReadme.title": "Align README with OPERA context",
296
+ "bootstrap.task.repoReadme.summary": "Review whether README should reflect the OPERA bootstrap.",
297
+ "bootstrap.task.repoLicense.title": "Review license policy",
298
+ "bootstrap.task.repoLicense.summary": "Confirm whether license metadata must be updated.",
299
+ "bootstrap.task.repoChangelog.title": "Define changelog policy",
300
+ "bootstrap.task.repoChangelog.summary": "Decide how CHANGELOG.md should be maintained in this project.",
301
+ "bootstrap.task.repoGithub.title": "Review GitHub governance tasks",
302
+ "bootstrap.task.repoGithub.summary": "Check whether repository automation or governance tasks should be enabled.",
303
+ "bootstrap.field.singularDesiredOutcome": "Desired outcome",
304
+ "bootstrap.field.desiredOutcome": "Desired outcome",
305
+ "bootstrap.field.problemStatement": "Problem statement",
306
+ "bootstrap.field.targetUser": "Target user",
307
+ "bootstrap.field.decisionOwnership": "Decision ownership",
308
+ "bootstrap.field.sourceOfTruth": "Source of truth",
309
+ "bootstrap.field.payload": "Payload",
310
+ "bootstrap.field.inputSchema": "Input schema",
311
+ "bootstrap.field.outputSchema": "Output schema",
312
+ "bootstrap.field.intakeJson": "intake.json file",
313
+ "bootstrap.field.specDossier": "spec-dossier.md file",
314
+ "bootstrap.decisionImpact": "Required to complete the OPERA bootstrap.",
315
+ "bootstrap.pendingDecision.handoff": "Send the TrackOps handoff to the agent",
316
+ "bootstrap.pendingDecision.handoffImpact": "Required so the agent can generate intake.json and spec-dossier.md.",
317
+ "bootstrap.finding.genesisConflictTitle": "Genesis requires manual review",
318
+ "bootstrap.finding.genesisConflictDetail": "TrackOps detected a non-template genesis.md and stopped automatic overwrite.",
319
+ "bootstrap.finding.genesisConflictImpact": "Bootstrap cannot be completed until the existing constitution is reviewed.",
320
+
321
+ "ui.nav.overview": "Overview",
322
+ "ui.nav.tasks": "Tasks",
323
+ "ui.nav.board": "Board",
324
+ "ui.nav.execution": "Execution",
325
+ "ui.nav.skills": "Skills",
326
+ "ui.nav.insights": "Insights",
327
+ "ui.nav.settings": "Settings",
328
+ "ui.nav.help": "Help & Tour",
329
+ "ui.nav.logs": "Logs",
330
+ "ui.sidebar.aria": "Main navigation",
331
+ "ui.sidebar.home": "TrackOps — Go home",
332
+ "ui.sidebar.menu": "Menu",
333
+ "ui.sidebar.general": "General",
334
+ "ui.sidebar.pendingCount": "{count} pending",
335
+ "ui.sidebar.tasksBadge": "{count} tasks",
336
+ "ui.sidebar.errors": "errors",
337
+ "ui.topbar.openMenu": "Open menu",
338
+ "ui.topbar.searchAria": "Search tasks",
339
+ "ui.topbar.searchPlaceholder": "Search tasks...",
340
+ "ui.topbar.timer": "Time tracking",
341
+ "ui.topbar.syncAria": "Sync documentation",
342
+ "ui.topbar.sync": "Sync",
343
+ "ui.topbar.refresh": "Refresh state",
344
+ "ui.topbar.repoClean": "Clean repo",
345
+ "ui.topbar.repoDirty": "{staged}s {unstaged}u {untracked}?",
346
+ "ui.topbar.noBranch": "no branch",
347
+ "ui.topbar.unavailable": "unavailable",
348
+ "ui.topbar.activeProject": "Active project",
349
+ "ui.topbar.language": "Language",
350
+ "ui.topbar.languageAria": "Select dashboard language",
351
+ "ui.topbar.languageEs": "ES",
352
+ "ui.topbar.languageEn": "EN",
353
+ "ui.topbar.localeUpdated": "Language updated.",
354
+ "ui.topbar.syncing": "Syncing...",
355
+ "ui.topbar.synced": "Documentation synced.",
356
+ "ui.onboarding.prev": "Previous",
357
+ "ui.onboarding.next": "Next ->",
358
+ "ui.onboarding.start": "Start",
359
+ "ui.onboarding.step": "Step {current} of {total}",
360
+ "ui.onboarding.welcome.title": "Welcome to TrackOps",
361
+ "ui.onboarding.welcome.desc": "Your local operating engine for development. This tour only takes a couple of minutes.",
362
+ "ui.onboarding.nav.title": "Main navigation",
363
+ "ui.onboarding.nav.desc": "The sidebar takes you across the main views and highlights pending work.",
364
+ "ui.onboarding.kpi.title": "Instant metrics",
365
+ "ui.onboarding.kpi.desc": "The KPI cards summarize open, completed, blocked, and in-review work in real time.",
366
+ "ui.onboarding.activity.title": "Weekly activity",
367
+ "ui.onboarding.activity.desc": "This chart shows recent state changes so you can spot activity spikes and dead zones.",
368
+ "ui.onboarding.progress.title": "Global progress",
369
+ "ui.onboarding.progress.desc": "The donut breaks down task completion across the project.",
370
+ "ui.onboarding.time.title": "Time tracking",
371
+ "ui.onboarding.time.desc": "Track time per task and keep those records for later analysis.",
372
+ "ui.onboarding.search.title": "Global search",
373
+ "ui.onboarding.search.desc": "Filter tasks from anywhere and switch active projects from the top bar.",
374
+ "ui.onboarding.board.title": "Kanban board",
375
+ "ui.onboarding.board.desc": "Drag cards across columns to update state and regenerate operational docs.",
376
+ "ui.onboarding.tasks.title": "Task editor",
377
+ "ui.onboarding.tasks.desc": "Select a task to edit status, priority, acceptance criteria, and notes.",
378
+ "ui.onboarding.execution.title": "Integrated console",
379
+ "ui.onboarding.execution.desc": "Run shell commands directly from the dashboard.",
380
+ "ui.onboarding.insights.title": "Project insights",
381
+ "ui.onboarding.insights.desc": "Review health, time tracking, progress by phase, and recent activity.",
382
+ "ui.onboarding.skills.title": "Skill hub",
383
+ "ui.onboarding.skills.desc": "Install new capabilities for your copilot from the integrated catalog.",
384
+ "ui.onboarding.theme.title": "Light / dark theme",
385
+ "ui.onboarding.theme.desc": "Switch themes without leaving the dashboard.",
386
+ "ui.onboarding.done.title": "All set",
387
+ "ui.onboarding.done.desc": "You can relaunch this tour at any time from Help & Tour in the sidebar.",
388
+
389
+ "ui.execution.eyebrow": "Execution",
390
+ "ui.execution.title": "Command Console",
391
+ "ui.execution.run": "Run",
392
+ "ui.execution.command": "Command",
393
+ "ui.execution.commandAria": "Enter the command to run",
394
+ "ui.execution.runButtonAria": "Run command",
395
+ "ui.execution.quickTitle": "Quick commands",
396
+ "ui.execution.runQuick": "Run {label}",
397
+ "ui.execution.sessions": "Sessions",
398
+ "ui.execution.noSessions": "No active sessions.",
399
+ "ui.execution.noSessionTitle": "ops@terminal — no active session",
400
+ "ui.execution.stopAria": "Stop process",
401
+ "ui.execution.stop": "Stop",
402
+ "ui.execution.output": "Command output",
403
+ "ui.execution.outputPlaceholder": "# Run a command to see its output here...",
404
+ "ui.execution.started": "Started",
405
+ "ui.execution.running": "Running...",
406
+ "ui.execution.quick.status": "status",
407
+ "ui.execution.quick.sync": "sync docs",
408
+ "ui.execution.quick.next": "next tasks",
409
+ "ui.execution.quick.repo": "refresh repo",
410
+ "ui.settings.workspaceTitle": "Workspace",
411
+ "ui.settings.workspaceRoot": "Workspace root",
412
+ "ui.settings.appRoot": "App root",
413
+ "ui.settings.opsRoot": "Ops root",
414
+ "ui.settings.envTitle": "Environment",
415
+ "ui.settings.envHealthyBadge": "Ready",
416
+ "ui.settings.envMissingBadge": "{count} missing",
417
+ "ui.settings.envBridgeMode": "Bridge mode",
418
+ "ui.settings.envRootFile": "Root .env",
419
+ "ui.settings.envExampleFile": ".env.example",
420
+ "ui.settings.envAppBridge": "app/.env bridge",
421
+ "ui.settings.envRequiredKeys": "Required keys",
422
+ "ui.settings.envPresentKeys": "Present keys",
423
+ "ui.settings.envMissingKeys": "Missing keys",
424
+ "ui.settings.envNoMissing": "None",
425
+ "ui.settings.envLastAudit": "Last audit",
426
+ "ui.settings.envSync": "Sync env",
427
+ "ui.settings.envSynced": "Environment synced."
142
428
  }