hadara 0.2.0-rc.0 → 0.2.0-rc.1
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/README.md +9 -8
- package/dist/agent/evidence.js +0 -0
- package/dist/agent/loop.js +0 -0
- package/dist/cli/actor.js +0 -0
- package/dist/cli/args.js +0 -0
- package/dist/cli/dashboard.js +0 -0
- package/dist/cli/debt.js +0 -0
- package/dist/cli/dev.js +0 -0
- package/dist/cli/doctor.js +2 -2
- package/dist/cli/errors.js +0 -0
- package/dist/cli/evidence-json.js +0 -0
- package/dist/cli/evidence.js +0 -0
- package/dist/cli/handoff.js +7 -2
- package/dist/cli/harness.js +0 -0
- package/dist/cli/hermes-json.js +0 -0
- package/dist/cli/hermes.js +0 -0
- package/dist/cli/init.js +30 -5
- package/dist/cli/install.js +0 -0
- package/dist/cli/main.js +2 -2
- package/dist/cli/mcp.js +0 -0
- package/dist/cli/package-smoke.js +0 -0
- package/dist/cli/policy-json.js +0 -0
- package/dist/cli/policy.js +0 -0
- package/dist/cli/protocol.js +0 -0
- package/dist/cli/release-artifact.js +0 -0
- package/dist/cli/release-dry-run.js +0 -0
- package/dist/cli/release-gate.js +0 -0
- package/dist/cli/release-publish.js +0 -0
- package/dist/cli/run-scaffold.js +1 -1
- package/dist/cli/run-state.js +0 -0
- package/dist/cli/run.js +0 -0
- package/dist/cli/smoke.js +0 -0
- package/dist/cli/status-json.js +0 -0
- package/dist/cli/status.js +0 -0
- package/dist/cli/task-json.js +0 -0
- package/dist/cli/task.js +0 -0
- package/dist/cli/tools.js +0 -0
- package/dist/cli/tui.js +0 -0
- package/dist/cli/version.js +0 -0
- package/dist/cli/write-preflight.js +0 -0
- package/dist/core/actor-context.js +0 -0
- package/dist/core/audit.js +0 -0
- package/dist/core/events.js +0 -0
- package/dist/core/fs.js +0 -0
- package/dist/core/next-action.js +0 -0
- package/dist/core/paths.js +0 -0
- package/dist/core/plan-context.js +0 -0
- package/dist/core/redaction.js +0 -0
- package/dist/core/schema.js +0 -0
- package/dist/core/workspace.js +0 -0
- package/dist/dev/docker-check.js +5 -3
- package/dist/evidence/evidence.js +0 -0
- package/dist/evidence/normalizer.js +0 -0
- package/dist/evidence/private-manifest.js +0 -0
- package/dist/evidence/semantics.js +0 -0
- package/dist/handoff/handoff-suggestion.js +2 -2
- package/dist/handoff/handoff.js +15 -1
- package/dist/harness/replay.js +0 -0
- package/dist/harness/validate.js +0 -0
- package/dist/hermes/context-export.js +0 -0
- package/dist/index.js +0 -0
- package/dist/mcp/server.js +0 -0
- package/dist/mcp/tool-dispatch.js +0 -0
- package/dist/mcp/tool-registry.js +0 -0
- package/dist/mcp/tool-schemas.js +0 -0
- package/dist/policy/command-risk.js +0 -0
- package/dist/policy/permission-matrix.js +0 -0
- package/dist/policy/policy.js +0 -0
- package/dist/policy/preflight.js +0 -0
- package/dist/policy/presets.js +0 -0
- package/dist/policy/tokenizer.js +0 -0
- package/dist/providers/fallback-executor.js +0 -0
- package/dist/providers/mock-provider.js +0 -0
- package/dist/providers/provider-contract.js +0 -0
- package/dist/providers/provider-preparation.js +0 -0
- package/dist/providers/scripted-provider.js +0 -0
- package/dist/schemas/active-run-projection.schema.json +0 -0
- package/dist/schemas/active-run-resume.schema.json +0 -0
- package/dist/schemas/actor-context.schema.json +0 -0
- package/dist/schemas/clean-checkout-smoke.schema.json +0 -0
- package/dist/schemas/context-export.schema.json +0 -0
- package/dist/schemas/dashboard-bootstrap.schema.json +0 -0
- package/dist/schemas/dashboard-core.schema.json +0 -0
- package/dist/schemas/dashboard-task-detail.schema.json +0 -0
- package/dist/schemas/dashboard-timeline.schema.json +0 -0
- package/dist/schemas/dev-docker-check.schema.json +15 -1
- package/dist/schemas/event.schema.json +0 -0
- package/dist/schemas/evidence-lint.schema.json +0 -0
- package/dist/schemas/evidence-list.schema.json +0 -0
- package/dist/schemas/evidence-migration-preview.schema.json +0 -0
- package/dist/schemas/feature-smoke.schema.json +0 -0
- package/dist/schemas/handoff-suggestion.schema.json +0 -0
- package/dist/schemas/install-plan.schema.json +0 -0
- package/dist/schemas/next-action.schema.json +0 -0
- package/dist/schemas/package-smoke.schema.json +0 -0
- package/dist/schemas/plan-context.schema.json +0 -0
- package/dist/schemas/private-evidence.schema.json +0 -0
- package/dist/schemas/protocol-consistency.schema.json +0 -0
- package/dist/schemas/protocol-remediation.schema.json +0 -0
- package/dist/schemas/provider-call.schema.json +0 -0
- package/dist/schemas/provider-config.schema.json +0 -0
- package/dist/schemas/release-artifact-manifest.schema.json +0 -0
- package/dist/schemas/release-artifact.schema.json +0 -0
- package/dist/schemas/release-dry-run.schema.json +0 -0
- package/dist/schemas/release-gate.schema.json +0 -0
- package/dist/schemas/release-publish.schema.json +0 -0
- package/dist/schemas/runtime-version.schema.json +0 -0
- package/dist/schemas/schema-index.json +0 -0
- package/dist/schemas/smoke-evidence-summary.schema.json +0 -0
- package/dist/schemas/task-audit-close.schema.json +0 -0
- package/dist/schemas/task-close.schema.json +0 -0
- package/dist/schemas/task-complete-flow.schema.json +0 -0
- package/dist/schemas/task-create.schema.json +0 -0
- package/dist/schemas/task-finish.schema.json +0 -0
- package/dist/schemas/task-next.schema.json +0 -0
- package/dist/schemas/task-ready.schema.json +0 -0
- package/dist/schemas/task-upgrade-scaffold.schema.json +0 -0
- package/dist/schemas/task-workbench.schema.json +12 -0
- package/dist/schemas/tools-list.schema.json +0 -0
- package/dist/schemas/write-preflight.schema.json +0 -0
- package/dist/services/active-run-state.js +0 -0
- package/dist/services/capability-registry.js +0 -0
- package/dist/services/clean-checkout-smoke.js +0 -0
- package/dist/services/dashboard-bootstrap.js +0 -0
- package/dist/services/dashboard-cache.js +0 -0
- package/dist/services/dashboard-core.js +0 -0
- package/dist/services/dashboard-heavy-projection.js +0 -0
- package/dist/services/dashboard-projection-store.js +0 -0
- package/dist/services/dashboard-refresh.js +0 -0
- package/dist/services/dashboard-task-detail.js +2 -0
- package/dist/services/dashboard-task-projection.js +0 -0
- package/dist/services/dashboard-timeline.js +0 -0
- package/dist/services/evidence-lint.js +1 -1
- package/dist/services/evidence-list.js +1 -1
- package/dist/services/evidence-migration.js +0 -0
- package/dist/services/feature-smoke.js +0 -0
- package/dist/services/handoff-summary-parser.js +0 -0
- package/dist/services/harness-service.js +0 -0
- package/dist/services/install-plan.js +0 -0
- package/dist/services/markdown-table.js +0 -0
- package/dist/services/operational-debt.js +0 -0
- package/dist/services/operations-status-service.js +5 -1
- package/dist/services/package-smoke.js +0 -0
- package/dist/services/policy-service.js +0 -0
- package/dist/services/project-read-model.js +0 -0
- package/dist/services/protocol-consistency.js +0 -0
- package/dist/services/protocol-profile.js +0 -0
- package/dist/services/protocol-remediation.js +0 -0
- package/dist/services/release-artifact-evidence.js +0 -0
- package/dist/services/release-artifact.js +0 -0
- package/dist/services/release-diagnostics.js +0 -0
- package/dist/services/release-dry-run.js +0 -0
- package/dist/services/release-evidence-validation.js +0 -0
- package/dist/services/release-evidence.js +0 -0
- package/dist/services/release-provider-advisories.js +0 -0
- package/dist/services/release-publish.js +0 -0
- package/dist/services/release-readiness-summary.js +0 -0
- package/dist/services/release-target-configuration.js +0 -0
- package/dist/services/release-targets.js +0 -0
- package/dist/services/runtime-version.js +0 -0
- package/dist/services/smoke-evidence.js +0 -0
- package/dist/services/task-read-model.js +2 -2
- package/dist/services/task-workbench.js +39 -0
- package/dist/services/tools-list.js +0 -0
- package/dist/services/workbench-next-actions.js +0 -0
- package/dist/services/write-preflight.js +0 -0
- package/dist/task/lifecycle-next-actions.js +0 -0
- package/dist/task/task-capsule.js +29 -0
- package/dist/task/task-close.js +0 -0
- package/dist/task/task-complete-flow.js +0 -0
- package/dist/task/task-create.js +0 -0
- package/dist/task/task-finish.js +1 -1
- package/dist/task/task-next.js +0 -0
- package/dist/task/task-ready.js +0 -0
- package/dist/task/task-templates.js +0 -0
- package/dist/task/task-upgrade-scaffold.js +0 -0
- package/dist/tools/fake-shell.js +0 -0
- package/dist/tui/cache.js +0 -0
- package/dist/tui/constants.js +0 -0
- package/dist/tui/layout.js +0 -0
- package/dist/tui/markdown.js +0 -0
- package/dist/tui/read-model-worker.js +0 -0
- package/dist/tui/read-model.js +4 -1
- package/dist/tui/snapshot.js +0 -0
- package/dist/tui/state.js +0 -0
- package/dist/tui/terminal.js +0 -0
- package/dist/tui/theme.js +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
<img alt="Release candidate" src="https://img.shields.io/badge/release-0.2.0--rc.
|
|
8
|
+
<img alt="Release candidate" src="https://img.shields.io/badge/release-0.2.0--rc.1-blue">
|
|
9
9
|
<img alt="Node.js" src="https://img.shields.io/badge/node-%3E%3D22-brightgreen">
|
|
10
10
|
<img alt="License" src="https://img.shields.io/badge/license-MIT-lightgrey">
|
|
11
11
|
</p>
|
|
@@ -23,10 +23,10 @@ This repository is both the HADARA source checkout and the HADARA protocol works
|
|
|
23
23
|
The current source checkout targets:
|
|
24
24
|
|
|
25
25
|
```text
|
|
26
|
-
hadara@0.2.0-rc.
|
|
26
|
+
hadara@0.2.0-rc.1
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
T-
|
|
29
|
+
T-0275 refreshes package smoke, clean-checkout smoke, release artifact, release dry-run, and publish dry-run evidence for `0.2.0-rc.1`. T-0269 prepared the previous `0.2.0-rc.0` publish path, but rc.1 supersedes it after the installed-package recycle fixes.
|
|
30
30
|
|
|
31
31
|
Current publish boundaries:
|
|
32
32
|
|
|
@@ -34,7 +34,8 @@ Current publish boundaries:
|
|
|
34
34
|
|---|---|
|
|
35
35
|
| npm package | Primary release target. |
|
|
36
36
|
| `hadara@0.1.0-rc.0` | Published first RC. |
|
|
37
|
-
| `hadara@0.2.0-rc.0` |
|
|
37
|
+
| `hadara@0.2.0-rc.0` | Superseded internal publish candidate after recycle findings. |
|
|
38
|
+
| `hadara@0.2.0-rc.1` | Current source and publish-candidate version. |
|
|
38
39
|
| GitHub Release | Secondary target, still approval-gated. |
|
|
39
40
|
| Docker image | Deferred. |
|
|
40
41
|
| PyPI/Python package | Advisory preview only. |
|
|
@@ -49,7 +50,7 @@ Requires Node.js 22.
|
|
|
49
50
|
Install the current RC:
|
|
50
51
|
|
|
51
52
|
```bash
|
|
52
|
-
npm install -g hadara@0.2.0-rc.
|
|
53
|
+
npm install -g hadara@0.2.0-rc.1
|
|
53
54
|
hadara doctor --json
|
|
54
55
|
hadara task list --json
|
|
55
56
|
hadara tools list --json
|
|
@@ -58,11 +59,11 @@ hadara tools list --json
|
|
|
58
59
|
Run without a global install:
|
|
59
60
|
|
|
60
61
|
```bash
|
|
61
|
-
npx hadara@0.2.0-rc.
|
|
62
|
-
npx hadara@0.2.0-rc.
|
|
62
|
+
npx hadara@0.2.0-rc.1 doctor --json
|
|
63
|
+
npx hadara@0.2.0-rc.1 tools list --json
|
|
63
64
|
```
|
|
64
65
|
|
|
65
|
-
Previous RC: `hadara@0.1.0-rc.0` remains available on npm for comparison or rollback, but new installs should use the current RC once it is published.
|
|
66
|
+
Previous published RC: `hadara@0.1.0-rc.0` remains available on npm for comparison or rollback, but new installs should use the current RC once it is published.
|
|
66
67
|
|
|
67
68
|
## What HADARA Gives You
|
|
68
69
|
|
package/dist/agent/evidence.js
CHANGED
|
File without changes
|
package/dist/agent/loop.js
CHANGED
|
File without changes
|
package/dist/cli/actor.js
CHANGED
|
File without changes
|
package/dist/cli/args.js
CHANGED
|
File without changes
|
package/dist/cli/dashboard.js
CHANGED
|
File without changes
|
package/dist/cli/debt.js
CHANGED
|
File without changes
|
package/dist/cli/dev.js
CHANGED
|
File without changes
|
package/dist/cli/doctor.js
CHANGED
|
@@ -11,7 +11,7 @@ function createDoctorReport(paths, nodeVersion = process.version) {
|
|
|
11
11
|
const checks = [
|
|
12
12
|
pathCheck('docs', paths.projectDocsDir),
|
|
13
13
|
pathCheck('tasks', paths.projectTasksDir),
|
|
14
|
-
pathCheck('project-context', paths.
|
|
14
|
+
pathCheck('project-context', `${paths.projectContextDir}/HADARA_CONTEXT.md`)
|
|
15
15
|
];
|
|
16
16
|
return {
|
|
17
17
|
schemaVersion: 'hadara.doctor.v1',
|
|
@@ -63,6 +63,6 @@ function formatCheckLabel(id) {
|
|
|
63
63
|
if (id === 'tasks')
|
|
64
64
|
return 'tasks/: ';
|
|
65
65
|
if (id === 'project-context')
|
|
66
|
-
return '.hadara
|
|
66
|
+
return '.hadara/context/HADARA_CONTEXT.md: ';
|
|
67
67
|
return `${id}: `;
|
|
68
68
|
}
|
package/dist/cli/errors.js
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/cli/evidence.js
CHANGED
|
File without changes
|
package/dist/cli/handoff.js
CHANGED
|
@@ -27,7 +27,12 @@ function handleHandoffCommand(input) {
|
|
|
27
27
|
const taskId = (0, args_1.getStringOption)(input.args, '--task');
|
|
28
28
|
const summary = (0, args_1.getStringOption)(input.args, '--summary');
|
|
29
29
|
const nextStep = (0, args_1.getStringOption)(input.args, '--next');
|
|
30
|
-
const
|
|
31
|
-
|
|
30
|
+
const report = (0, handoff_1.updateHandoff)({ projectRoot: input.projectRoot, taskId, summary, nextStep });
|
|
31
|
+
if (input.jsonOutput) {
|
|
32
|
+
console.log(JSON.stringify(report, null, 2));
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
console.log(`[HADARA] Handoff updated: ${report.target.path}`);
|
|
36
|
+
}
|
|
32
37
|
return true;
|
|
33
38
|
}
|
package/dist/cli/harness.js
CHANGED
|
File without changes
|
package/dist/cli/hermes-json.js
CHANGED
|
File without changes
|
package/dist/cli/hermes.js
CHANGED
|
File without changes
|
package/dist/cli/init.js
CHANGED
|
@@ -58,17 +58,37 @@ const INIT_PROFILE_SPECS = {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
};
|
|
61
|
-
function initProject(projectRoot, profile = 'standard') {
|
|
61
|
+
function initProject(projectRoot, profile = 'standard', options = {}) {
|
|
62
62
|
const normalizedProfile = parseInitProfile(profile);
|
|
63
63
|
const spec = INIT_PROFILE_SPECS[normalizedProfile];
|
|
64
64
|
const paths = (0, paths_1.resolveHadaraPaths)({ projectRoot });
|
|
65
65
|
(0, fs_1.ensureDir)(paths.projectDocsDir);
|
|
66
66
|
(0, fs_1.ensureDir)(paths.projectTasksDir);
|
|
67
|
+
const actions = [];
|
|
67
68
|
for (const file of createGeneratedScaffoldFiles(normalizedProfile)) {
|
|
69
|
+
const absolutePath = node_path_1.default.join(projectRoot, file.path);
|
|
70
|
+
const existed = node_fs_1.default.existsSync(absolutePath);
|
|
68
71
|
(0, fs_1.writeFileIfMissing)(node_path_1.default.join(projectRoot, file.path), file.content);
|
|
72
|
+
actions.push({
|
|
73
|
+
action: 'init-doc',
|
|
74
|
+
path: file.path,
|
|
75
|
+
status: existed ? 'exists' : 'created',
|
|
76
|
+
summary: existed ? `${file.path} already existed and was not overwritten.` : `${file.path} was created.`
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
const report = {
|
|
80
|
+
schemaVersion: 'hadara.init.v1',
|
|
81
|
+
command: 'init',
|
|
82
|
+
ok: true,
|
|
83
|
+
profile: normalizedProfile,
|
|
84
|
+
actions,
|
|
85
|
+
issues: []
|
|
86
|
+
};
|
|
87
|
+
if (!options.silent) {
|
|
88
|
+
console.log(`[HADARA] Initialized project: ${projectRoot}`);
|
|
89
|
+
console.log(`[HADARA] Init profile: ${normalizedProfile}`);
|
|
69
90
|
}
|
|
70
|
-
|
|
71
|
-
console.log(`[HADARA] Init profile: ${normalizedProfile}`);
|
|
91
|
+
return report;
|
|
72
92
|
}
|
|
73
93
|
function parseInitProfile(value) {
|
|
74
94
|
if (value === 'basic' || value === 'standard' || value === 'governed')
|
|
@@ -106,7 +126,9 @@ function handleInitCommand(input) {
|
|
|
106
126
|
printInitFollowUpReport(report, input.jsonOutput);
|
|
107
127
|
return true;
|
|
108
128
|
}
|
|
109
|
-
initProject(input.projectRoot, (0, args_1.getStringOption)(input.args, '--profile', 'standard') ?? 'standard');
|
|
129
|
+
const report = initProject(input.projectRoot, (0, args_1.getStringOption)(input.args, '--profile', 'standard') ?? 'standard', { silent: input.jsonOutput });
|
|
130
|
+
if (input.jsonOutput)
|
|
131
|
+
console.log(JSON.stringify(report, null, 2));
|
|
110
132
|
return true;
|
|
111
133
|
}
|
|
112
134
|
function getInitFollowUpMode(args) {
|
|
@@ -160,7 +182,7 @@ function createInitDoctorReport(projectRoot) {
|
|
|
160
182
|
issues.push({ severity: 'warning', code: 'INIT_BROAD_DATA_IGNORE', path: '.gitignore', message: 'Top-level data/ is ignored; generated init should only ignore HADARA local/private state.' });
|
|
161
183
|
}
|
|
162
184
|
const sop = readProjectText(projectRoot, 'docs/IMPLEMENTATION_SOP.md');
|
|
163
|
-
if (sop !== null &&
|
|
185
|
+
if (sop !== null && mentionsLegacyInitProfile(sop)) {
|
|
164
186
|
issues.push({ severity: 'warning', code: 'INIT_OLD_PROFILE_NAME', path: 'docs/IMPLEMENTATION_SOP.md', message: 'SOP mentions old init profile names.' });
|
|
165
187
|
}
|
|
166
188
|
issues.push(...detectProfileMetadataMismatches(projectRoot));
|
|
@@ -185,6 +207,9 @@ function createInitDoctorReport(projectRoot) {
|
|
|
185
207
|
issues
|
|
186
208
|
};
|
|
187
209
|
}
|
|
210
|
+
function mentionsLegacyInitProfile(content) {
|
|
211
|
+
return /(?:initialized with|profile(?:\s+name)?|init profile)\s+(?:the\s+)?`?(minimal|full|hadara-protocol)`?/i.test(content);
|
|
212
|
+
}
|
|
188
213
|
function createInitUpgradeReport(projectRoot, profile, mode) {
|
|
189
214
|
const actions = [];
|
|
190
215
|
const issues = [];
|
package/dist/cli/install.js
CHANGED
|
File without changes
|
package/dist/cli/main.js
CHANGED
|
@@ -41,7 +41,7 @@ function printHelp() {
|
|
|
41
41
|
console.log(`HADARA bootstrap CLI
|
|
42
42
|
|
|
43
43
|
Usage:
|
|
44
|
-
hadara init [--project <path>] [--profile basic|standard|governed]
|
|
44
|
+
hadara init [--project <path>] [--profile basic|standard|governed] [--json]
|
|
45
45
|
hadara init doctor [--json]
|
|
46
46
|
hadara init upgrade --profile basic|standard|governed [--execute] [--json]
|
|
47
47
|
hadara init register-doc --path <path> --when <text> --purpose <text> [--require-exists] [--execute] [--json]
|
|
@@ -73,7 +73,7 @@ Usage:
|
|
|
73
73
|
hadara protocol doctor --scope docs|profile|all [--json]
|
|
74
74
|
hadara protocol remediate --fix task-board-row|decisions-table-frame|project-state-profile|evidence-jsonl [--task <task-id>] [--profile basic|standard|governed] [--execute --before-hash <hash>] [--json]
|
|
75
75
|
hadara tools list [--json]
|
|
76
|
-
hadara handoff update --task <task-id> [--summary <text>] [--next <text>]
|
|
76
|
+
hadara handoff update --task <task-id> [--summary <text>] [--next <text>] [--json]
|
|
77
77
|
hadara handoff suggest --task <task-id> [--json]
|
|
78
78
|
hadara write preflight <command...> [--json]
|
|
79
79
|
hadara policy check-shell <command> [--mode readonly|assisted|trusted|auto|release]
|
package/dist/cli/mcp.js
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/cli/policy-json.js
CHANGED
|
File without changes
|
package/dist/cli/policy.js
CHANGED
|
File without changes
|
package/dist/cli/protocol.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/cli/release-gate.js
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/cli/run-scaffold.js
CHANGED
package/dist/cli/run-state.js
CHANGED
|
File without changes
|
package/dist/cli/run.js
CHANGED
|
File without changes
|
package/dist/cli/smoke.js
CHANGED
|
File without changes
|
package/dist/cli/status-json.js
CHANGED
|
File without changes
|
package/dist/cli/status.js
CHANGED
|
File without changes
|
package/dist/cli/task-json.js
CHANGED
|
File without changes
|
package/dist/cli/task.js
CHANGED
|
File without changes
|
package/dist/cli/tools.js
CHANGED
|
File without changes
|
package/dist/cli/tui.js
CHANGED
|
File without changes
|
package/dist/cli/version.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/core/audit.js
CHANGED
|
File without changes
|
package/dist/core/events.js
CHANGED
|
File without changes
|
package/dist/core/fs.js
CHANGED
|
File without changes
|
package/dist/core/next-action.js
CHANGED
|
File without changes
|
package/dist/core/paths.js
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/core/redaction.js
CHANGED
|
File without changes
|
package/dist/core/schema.js
CHANGED
|
File without changes
|
package/dist/core/workspace.js
CHANGED
|
File without changes
|
package/dist/dev/docker-check.js
CHANGED
|
@@ -60,8 +60,10 @@ function createDevDockerCheckReport(projectRoot, options = {}, runner = defaultR
|
|
|
60
60
|
issues.push({
|
|
61
61
|
severity: 'error',
|
|
62
62
|
code: 'DEV_DOCKER_CHECK_STEP_FAILED',
|
|
63
|
-
message: `Docker validation step failed: ${step.id}. Raw subprocess logs are intentionally omitted from the JSON report.`,
|
|
64
|
-
stepId: step.id
|
|
63
|
+
message: `Docker validation step failed: ${step.id}${typeof result.exitCode === 'number' ? ` (exit code ${result.exitCode})` : ''}. Raw subprocess logs are intentionally omitted from the JSON report.`,
|
|
64
|
+
stepId: step.id,
|
|
65
|
+
...(typeof result.exitCode === 'number' ? { exitCode: result.exitCode } : {}),
|
|
66
|
+
debugHint: `Rerun dev docker-check without --json, or inspect the Docker container step ${step.id}; JSON reports keep subprocess logs private.`
|
|
65
67
|
});
|
|
66
68
|
blocked = true;
|
|
67
69
|
}
|
|
@@ -125,7 +127,7 @@ function formatDevDockerCheckReport(report) {
|
|
|
125
127
|
for (const step of report.steps)
|
|
126
128
|
lines.push(`${step.status}\t${step.id}\t${step.summary}`);
|
|
127
129
|
for (const issue of report.issues)
|
|
128
|
-
lines.push(`[${issue.severity}] ${issue.code}: ${issue.message}`);
|
|
130
|
+
lines.push(`[${issue.severity}] ${issue.code}: ${issue.message}${typeof issue.exitCode === 'number' ? ` exitCode=${issue.exitCode}` : ''}`);
|
|
129
131
|
return lines.join('\n');
|
|
130
132
|
}
|
|
131
133
|
function buildSteps(focusedTests, runFullCheck, syncDistRequested, syncDistAllowed) {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -73,7 +73,7 @@ function readTaskSnapshot(projectRoot, taskId, issues) {
|
|
|
73
73
|
function createSections(task, targetBeforeHash, executeRequested) {
|
|
74
74
|
const displayName = [task.taskId, task.title].filter(Boolean).join(' ');
|
|
75
75
|
const evidence = task.evidenceSummary ?? 'Review task evidence and validation records.';
|
|
76
|
-
const nextTask = executeRequested ? 'Remove --execute and review this suggestion report.' : 'Run `hadara task next --json` and create the next
|
|
76
|
+
const nextTask = executeRequested ? 'Remove --execute and review this suggestion report.' : 'Run `hadara task next --json` and create or select the next capsule.';
|
|
77
77
|
return [
|
|
78
78
|
section({
|
|
79
79
|
id: 'current-state',
|
|
@@ -108,7 +108,7 @@ function createSections(task, targetBeforeHash, executeRequested) {
|
|
|
108
108
|
action: 'replace-row',
|
|
109
109
|
summary: 'Point the next step at task discovery rather than applying this report automatically.',
|
|
110
110
|
targetBeforeHash,
|
|
111
|
-
suggestedReplacementMarkdown: `| Select the next task with \`hadara task next --json\`. | Continue
|
|
111
|
+
suggestedReplacementMarkdown: `| Select the next task with \`hadara task next --json\`. | Continue project work after ${task.taskId} using the current Task Board and handoff. | Required reading: \`docs/AGENT_HANDOFF.md\`, \`docs/TASK_BOARD.md\`, and \`docs/TASK_WORKFLOW_COMMANDS.md\`. |`
|
|
112
112
|
}),
|
|
113
113
|
section({
|
|
114
114
|
id: 'validation-baseline',
|
package/dist/handoff/handoff.js
CHANGED
|
@@ -45,5 +45,19 @@ ${input.nextStep ?? 'Read PROJECT_STATE.md, TASK_BOARD.md, and the active Task C
|
|
|
45
45
|
Attach test logs, command outputs, and diff summaries under the active Task Capsule.
|
|
46
46
|
`;
|
|
47
47
|
node_fs_1.default.writeFileSync(filePath, content, 'utf8');
|
|
48
|
-
return
|
|
48
|
+
return {
|
|
49
|
+
schemaVersion: 'hadara.handoff.update.v1',
|
|
50
|
+
command: 'handoff.update',
|
|
51
|
+
ok: true,
|
|
52
|
+
target: {
|
|
53
|
+
path: 'docs/AGENT_HANDOFF.md',
|
|
54
|
+
writeBoundary: 'shared-doc'
|
|
55
|
+
},
|
|
56
|
+
input: {
|
|
57
|
+
taskId: input.taskId ?? null,
|
|
58
|
+
summaryProvided: typeof input.summary === 'string',
|
|
59
|
+
nextStepProvided: typeof input.nextStep === 'string'
|
|
60
|
+
},
|
|
61
|
+
issues: []
|
|
62
|
+
};
|
|
49
63
|
}
|
package/dist/harness/replay.js
CHANGED
|
File without changes
|
package/dist/harness/validate.js
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/index.js
CHANGED
|
File without changes
|
package/dist/mcp/server.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/mcp/tool-schemas.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/policy/policy.js
CHANGED
|
File without changes
|
package/dist/policy/preflight.js
CHANGED
|
File without changes
|
package/dist/policy/presets.js
CHANGED
|
File without changes
|
package/dist/policy/tokenizer.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -111,6 +111,20 @@
|
|
|
111
111
|
"environmentSecretsIncluded": { "const": false }
|
|
112
112
|
}
|
|
113
113
|
},
|
|
114
|
-
"issues": {
|
|
114
|
+
"issues": {
|
|
115
|
+
"type": "array",
|
|
116
|
+
"items": {
|
|
117
|
+
"type": "object",
|
|
118
|
+
"additionalProperties": true,
|
|
119
|
+
"properties": {
|
|
120
|
+
"severity": { "enum": ["error", "warning", "info"] },
|
|
121
|
+
"code": { "type": "string" },
|
|
122
|
+
"message": { "type": "string" },
|
|
123
|
+
"stepId": { "type": "string" },
|
|
124
|
+
"exitCode": { "type": "number" },
|
|
125
|
+
"debugHint": { "type": "string" }
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
115
129
|
}
|
|
116
130
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
}
|
|
30
30
|
],
|
|
31
31
|
"additive": [
|
|
32
|
+
"state.readiness",
|
|
32
33
|
"sources.*",
|
|
33
34
|
"nextActions.*"
|
|
34
35
|
],
|
|
@@ -67,6 +68,17 @@
|
|
|
67
68
|
"properties": {
|
|
68
69
|
"closeState": { "enum": ["not-closed", "closed", "closed-valid", "close-evidence-found-invalid", "close-evidence-malformed"] },
|
|
69
70
|
"ready": { "type": "boolean" },
|
|
71
|
+
"readiness": {
|
|
72
|
+
"type": "object",
|
|
73
|
+
"additionalProperties": true,
|
|
74
|
+
"required": ["status", "currentReady", "closeProofValid", "summary"],
|
|
75
|
+
"properties": {
|
|
76
|
+
"status": { "enum": ["ready", "current-blocked", "closed-valid-current-blocked", "missing-task"] },
|
|
77
|
+
"currentReady": { "type": "boolean" },
|
|
78
|
+
"closeProofValid": { "type": "boolean" },
|
|
79
|
+
"summary": { "type": "string" }
|
|
80
|
+
}
|
|
81
|
+
},
|
|
70
82
|
"closeEvidenceFound": { "type": "boolean" },
|
|
71
83
|
"closedValid": { "type": "boolean" },
|
|
72
84
|
"closed": { "type": "boolean" },
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|