instar 0.28.102 → 0.28.103
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/.claude/hooks/instar/before-prompt-recall.js +90 -0
- package/dist/cli.js +28 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +14 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/jobMigrate.d.ts +46 -0
- package/dist/commands/jobMigrate.d.ts.map +1 -0
- package/dist/commands/jobMigrate.js +292 -0
- package/dist/commands/jobMigrate.js.map +1 -0
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +88 -42
- package/dist/commands/server.js.map +1 -1
- package/dist/core/BackupManager.d.ts +27 -1
- package/dist/core/BackupManager.d.ts.map +1 -1
- package/dist/core/BackupManager.js +56 -1
- package/dist/core/BackupManager.js.map +1 -1
- package/dist/core/GitStateManager.d.ts +8 -0
- package/dist/core/GitStateManager.d.ts.map +1 -1
- package/dist/core/GitStateManager.js +31 -1
- package/dist/core/GitStateManager.js.map +1 -1
- package/dist/core/MigratorStepEngine.d.ts +170 -0
- package/dist/core/MigratorStepEngine.d.ts.map +1 -0
- package/dist/core/MigratorStepEngine.js +352 -0
- package/dist/core/MigratorStepEngine.js.map +1 -0
- package/dist/core/PostUpdateMigrator.d.ts +76 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +252 -1
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/PreCompactionFlush.d.ts +101 -0
- package/dist/core/PreCompactionFlush.d.ts.map +1 -0
- package/dist/core/PreCompactionFlush.js +282 -0
- package/dist/core/PreCompactionFlush.js.map +1 -0
- package/dist/core/PromptBuildRecall.d.ts +97 -0
- package/dist/core/PromptBuildRecall.d.ts.map +1 -0
- package/dist/core/PromptBuildRecall.js +152 -0
- package/dist/core/PromptBuildRecall.js.map +1 -0
- package/dist/core/selectIntelligenceProvider.d.ts +41 -0
- package/dist/core/selectIntelligenceProvider.d.ts.map +1 -0
- package/dist/core/selectIntelligenceProvider.js +89 -0
- package/dist/core/selectIntelligenceProvider.js.map +1 -0
- package/dist/lifeline/ServerSupervisor.d.ts +183 -0
- package/dist/lifeline/ServerSupervisor.d.ts.map +1 -1
- package/dist/lifeline/ServerSupervisor.js +443 -0
- package/dist/lifeline/ServerSupervisor.js.map +1 -1
- package/dist/memory/NativeModuleHealer.d.ts +89 -0
- package/dist/memory/NativeModuleHealer.d.ts.map +1 -1
- package/dist/memory/NativeModuleHealer.js +371 -1
- package/dist/memory/NativeModuleHealer.js.map +1 -1
- package/dist/memory/SemanticMemory.d.ts +131 -0
- package/dist/memory/SemanticMemory.d.ts.map +1 -1
- package/dist/memory/SemanticMemory.js +315 -0
- package/dist/memory/SemanticMemory.js.map +1 -1
- package/dist/messaging/DeliveryRetryManager.d.ts +60 -0
- package/dist/messaging/DeliveryRetryManager.d.ts.map +1 -1
- package/dist/messaging/DeliveryRetryManager.js +104 -0
- package/dist/messaging/DeliveryRetryManager.js.map +1 -1
- package/dist/monitoring/DegradationReporter.d.ts +164 -0
- package/dist/monitoring/DegradationReporter.d.ts.map +1 -1
- package/dist/monitoring/DegradationReporter.js +309 -1
- package/dist/monitoring/DegradationReporter.js.map +1 -1
- package/dist/monitoring/ErrorCodeExtractor.d.ts +69 -0
- package/dist/monitoring/ErrorCodeExtractor.d.ts.map +1 -0
- package/dist/monitoring/ErrorCodeExtractor.js +131 -0
- package/dist/monitoring/ErrorCodeExtractor.js.map +1 -0
- package/dist/monitoring/PromptGate.d.ts +34 -0
- package/dist/monitoring/PromptGate.d.ts.map +1 -1
- package/dist/monitoring/PromptGate.js +81 -1
- package/dist/monitoring/PromptGate.js.map +1 -1
- package/dist/monitoring/Redactor.d.ts +58 -0
- package/dist/monitoring/Redactor.d.ts.map +1 -0
- package/dist/monitoring/Redactor.js +143 -0
- package/dist/monitoring/Redactor.js.map +1 -0
- package/dist/monitoring/probes/LifelineProbe.d.ts +7 -0
- package/dist/monitoring/probes/LifelineProbe.d.ts.map +1 -1
- package/dist/monitoring/probes/LifelineProbe.js +7 -0
- package/dist/monitoring/probes/LifelineProbe.js.map +1 -1
- package/dist/monitoring/probes/__shared.d.ts +50 -0
- package/dist/monitoring/probes/__shared.d.ts.map +1 -0
- package/dist/monitoring/probes/__shared.js +51 -0
- package/dist/monitoring/probes/__shared.js.map +1 -0
- package/dist/remediation/IntentJournal.d.ts +64 -0
- package/dist/remediation/IntentJournal.d.ts.map +1 -0
- package/dist/remediation/IntentJournal.js +118 -0
- package/dist/remediation/IntentJournal.js.map +1 -0
- package/dist/remediation/MachineLock.d.ts +137 -0
- package/dist/remediation/MachineLock.d.ts.map +1 -0
- package/dist/remediation/MachineLock.js +314 -0
- package/dist/remediation/MachineLock.js.map +1 -0
- package/dist/remediation/PrimaryAggregatorLease.d.ts +205 -0
- package/dist/remediation/PrimaryAggregatorLease.d.ts.map +1 -0
- package/dist/remediation/PrimaryAggregatorLease.js +450 -0
- package/dist/remediation/PrimaryAggregatorLease.js.map +1 -0
- package/dist/remediation/RemediationContext.d.ts +63 -0
- package/dist/remediation/RemediationContext.d.ts.map +1 -0
- package/dist/remediation/RemediationContext.js +109 -0
- package/dist/remediation/RemediationContext.js.map +1 -0
- package/dist/remediation/RemediationKeyVault.d.ts +123 -0
- package/dist/remediation/RemediationKeyVault.d.ts.map +1 -0
- package/dist/remediation/RemediationKeyVault.js +564 -0
- package/dist/remediation/RemediationKeyVault.js.map +1 -0
- package/dist/remediation/Remediator.d.ts +288 -0
- package/dist/remediation/Remediator.d.ts.map +1 -0
- package/dist/remediation/Remediator.js +520 -0
- package/dist/remediation/Remediator.js.map +1 -0
- package/dist/remediation/RemediatorBootstrap.d.ts +141 -0
- package/dist/remediation/RemediatorBootstrap.d.ts.map +1 -0
- package/dist/remediation/RemediatorBootstrap.js +255 -0
- package/dist/remediation/RemediatorBootstrap.js.map +1 -0
- package/dist/remediation/TrustElevationSource.d.ts +153 -0
- package/dist/remediation/TrustElevationSource.d.ts.map +1 -0
- package/dist/remediation/TrustElevationSource.js +208 -0
- package/dist/remediation/TrustElevationSource.js.map +1 -0
- package/dist/remediation/audit/AuditProjection.d.ts +37 -0
- package/dist/remediation/audit/AuditProjection.d.ts.map +1 -0
- package/dist/remediation/audit/AuditProjection.js +118 -0
- package/dist/remediation/audit/AuditProjection.js.map +1 -0
- package/dist/remediation/audit/AuditWriter.d.ts +79 -0
- package/dist/remediation/audit/AuditWriter.d.ts.map +1 -0
- package/dist/remediation/audit/AuditWriter.js +132 -0
- package/dist/remediation/audit/AuditWriter.js.map +1 -0
- package/dist/remediation/channels/CliApprovalChannel.d.ts +37 -0
- package/dist/remediation/channels/CliApprovalChannel.d.ts.map +1 -0
- package/dist/remediation/channels/CliApprovalChannel.js +45 -0
- package/dist/remediation/channels/CliApprovalChannel.js.map +1 -0
- package/dist/remediation/channels/TelegramApprovalChannel.d.ts +37 -0
- package/dist/remediation/channels/TelegramApprovalChannel.d.ts.map +1 -0
- package/dist/remediation/channels/TelegramApprovalChannel.js +45 -0
- package/dist/remediation/channels/TelegramApprovalChannel.js.map +1 -0
- package/dist/remediation/runbooks/db-corruption.d.ts +86 -0
- package/dist/remediation/runbooks/db-corruption.d.ts.map +1 -0
- package/dist/remediation/runbooks/db-corruption.js +190 -0
- package/dist/remediation/runbooks/db-corruption.js.map +1 -0
- package/dist/remediation/runbooks/messaging-delivery-failed.d.ts +108 -0
- package/dist/remediation/runbooks/messaging-delivery-failed.d.ts.map +1 -0
- package/dist/remediation/runbooks/messaging-delivery-failed.js +172 -0
- package/dist/remediation/runbooks/messaging-delivery-failed.js.map +1 -0
- package/dist/remediation/runbooks/node-abi-mismatch.d.ts +70 -0
- package/dist/remediation/runbooks/node-abi-mismatch.d.ts.map +1 -0
- package/dist/remediation/runbooks/node-abi-mismatch.js +216 -0
- package/dist/remediation/runbooks/node-abi-mismatch.js.map +1 -0
- package/dist/remediation/runbooks/supervisor-preflight.d.ts +114 -0
- package/dist/remediation/runbooks/supervisor-preflight.d.ts.map +1 -0
- package/dist/remediation/runbooks/supervisor-preflight.js +299 -0
- package/dist/remediation/runbooks/supervisor-preflight.js.map +1 -0
- package/dist/scheduler/AgentMdAtomicSave.d.ts +85 -0
- package/dist/scheduler/AgentMdAtomicSave.d.ts.map +1 -0
- package/dist/scheduler/AgentMdAtomicSave.js +169 -0
- package/dist/scheduler/AgentMdAtomicSave.js.map +1 -0
- package/dist/scheduler/AgentMdReconcile.d.ts +62 -0
- package/dist/scheduler/AgentMdReconcile.d.ts.map +1 -0
- package/dist/scheduler/AgentMdReconcile.js +212 -0
- package/dist/scheduler/AgentMdReconcile.js.map +1 -0
- package/dist/scheduler/DisabledBodyDrift.d.ts +70 -0
- package/dist/scheduler/DisabledBodyDrift.d.ts.map +1 -0
- package/dist/scheduler/DisabledBodyDrift.js +149 -0
- package/dist/scheduler/DisabledBodyDrift.js.map +1 -0
- package/dist/scheduler/InstallBuiltinJobs.d.ts +53 -0
- package/dist/scheduler/InstallBuiltinJobs.d.ts.map +1 -0
- package/dist/scheduler/InstallBuiltinJobs.js +212 -0
- package/dist/scheduler/InstallBuiltinJobs.js.map +1 -0
- package/dist/scheduler/JobLoader.d.ts.map +1 -1
- package/dist/scheduler/JobLoader.js +48 -0
- package/dist/scheduler/JobLoader.js.map +1 -1
- package/dist/scheduler/MigrationInvariants.d.ts +62 -0
- package/dist/scheduler/MigrationInvariants.d.ts.map +1 -0
- package/dist/scheduler/MigrationInvariants.js +215 -0
- package/dist/scheduler/MigrationInvariants.js.map +1 -0
- package/dist/scheduler/MigrationLedger.d.ts +84 -0
- package/dist/scheduler/MigrationLedger.d.ts.map +1 -0
- package/dist/scheduler/MigrationLedger.js +114 -0
- package/dist/scheduler/MigrationLedger.js.map +1 -0
- package/dist/server/fileRoutes.d.ts.map +1 -1
- package/dist/server/fileRoutes.js +7 -0
- package/dist/server/fileRoutes.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +141 -0
- package/dist/server/routes.js.map +1 -1
- package/package.json +3 -2
- package/scripts/classify-default-drift.mjs +238 -0
- package/scripts/eli16-overview-check.mjs +85 -0
- package/scripts/instar-dev-precommit.js +60 -1
- package/scripts/lint-degradation-emit-sites.js +116 -0
- package/scripts/lint-no-direct-destructive.js +12 -0
- package/scripts/protect-migration-guarantee.js +61 -0
- package/scripts/regen-default-job-templates.mjs +111 -0
- package/scripts/verify-runbook-pr-signature.js +366 -0
- package/src/data/builtin-manifest.json +93 -93
- package/src/scaffold/bootstrap.ts +138 -0
- package/src/scaffold/keys/instar-release-pub.pem +3 -0
- package/src/scaffold/templates/jobs/instar/.gitkeep +0 -0
- package/src/scaffold/templates/jobs/instar/commitment-detection.md +28 -0
- package/src/scaffold/templates/jobs/instar/evolution-overdue-check.md +28 -0
- package/src/scaffold/templates/jobs/instar/evolution-proposal-evaluate.md +30 -0
- package/src/scaffold/templates/jobs/instar/evolution-proposal-implement.md +25 -0
- package/src/scaffold/templates/jobs/instar/health-check.md +14 -0
- package/src/scaffold/templates/jobs/instar/identity-review.md +42 -0
- package/src/scaffold/templates/jobs/instar/insight-harvest.md +31 -0
- package/src/scaffold/templates/jobs/instar/overseer-development.md +23 -0
- package/src/scaffold/templates/jobs/instar/overseer-guardian.md +28 -0
- package/src/scaffold/templates/jobs/instar/overseer-infrastructure.md +26 -0
- package/src/scaffold/templates/jobs/instar/overseer-learning.md +28 -0
- package/src/scaffold/templates/jobs/instar/overseer-maintenance.md +27 -0
- package/src/scaffold/templates/jobs/instar/reflection-trigger.md +40 -0
- package/src/scaffold/templates/jobs/instar/relationship-maintenance.md +16 -0
- package/src/scaffold/templates.ts +1616 -0
- package/upgrades/0.28.102.md +6 -7
- package/upgrades/0.28.103.md +471 -0
- package/upgrades/side-effects/a47-primary-aggregator-lease.md +82 -0
- package/upgrades/side-effects/agentmd-atomic-save.md +66 -0
- package/upgrades/side-effects/agentmd-loader-200jobs-perf-benchmark.md +50 -0
- package/upgrades/side-effects/agentmd-reconcile-boot-lifecycle.md +66 -0
- package/upgrades/side-effects/api-safety-guard.md +80 -0
- package/upgrades/side-effects/c1-runbook-pr-gate.md +83 -0
- package/upgrades/side-effects/disabled-body-drift-detection.md +59 -0
- package/upgrades/side-effects/drift-classifier-release-time.md +71 -0
- package/upgrades/side-effects/eli16-overview-required-gate.md +77 -0
- package/upgrades/side-effects/f1-remediation-key-vault.md +195 -0
- package/upgrades/side-effects/f2-redactor-errorcode-extractor.md +130 -0
- package/upgrades/side-effects/f3-degradation-reporter-shim.md +105 -0
- package/upgrades/side-effects/f4-machine-locks-intent-journal-audit.md +117 -0
- package/upgrades/side-effects/f5-trust-elevation-source.md +258 -0
- package/upgrades/side-effects/f6-supervisor-handshake.md +234 -0
- package/upgrades/side-effects/f7-post-update-migrator-atomic-step.md +129 -0
- package/upgrades/side-effects/f8-remediator-skeleton.md +153 -0
- package/upgrades/side-effects/f8-rest-enforcement.md +72 -0
- package/upgrades/side-effects/file-viewer-jobs-instar-never-editable.md +41 -0
- package/upgrades/side-effects/frontmatter-interpolation-breakout-test.md +48 -0
- package/upgrades/side-effects/jobs-as-agentmd-phase-2.md +78 -0
- package/upgrades/side-effects/jobs-as-agentmd-phase-3.md +76 -0
- package/upgrades/side-effects/jobs-as-agentmd-phase-4-endpoints.md +62 -0
- package/upgrades/side-effects/jobs-as-agentmd-phase-5.md +67 -0
- package/upgrades/side-effects/jobs-as-agentmd-phase-6.md +53 -0
- package/upgrades/side-effects/jobs-endpoints-auth-verification.md +52 -0
- package/upgrades/side-effects/migration-guarantee-suite.md +61 -0
- package/upgrades/side-effects/migration-runtime-invariant-gate.md +59 -0
- package/upgrades/side-effects/migration-telemetry-invariant-8.md +68 -0
- package/upgrades/side-effects/npm-pack-templates-smoke.md +51 -0
- package/upgrades/side-effects/openclaw-import-before-prompt-build.md +84 -0
- package/upgrades/side-effects/openclaw-import-pre-compaction-flush.md +85 -0
- package/upgrades/side-effects/prompt-gate-no-prompt-cache.md +258 -0
- package/upgrades/side-effects/tier2-degradation-reporter-live-wire.md +146 -0
- package/upgrades/side-effects/w1-node-abi-mismatch-runbook.md +154 -0
- package/upgrades/side-effects/w2-supervisor-preflight-runbook.md +176 -0
- package/upgrades/side-effects/w3-messaging-delivery-failed-runbook.md +185 -0
- package/upgrades/side-effects/w4-db-corruption-runbook.md +114 -0
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InstallBuiltinJobs — Phase 2 installer for instar-default jobs.
|
|
3
|
+
*
|
|
4
|
+
* Copies the shipped agentmd templates from the installed npm package into
|
|
5
|
+
* the agent's `.instar/jobs/instar/` directory and creates the corresponding
|
|
6
|
+
* per-slug manifest under `.instar/jobs/schedule/`. Idempotent. Safe to call
|
|
7
|
+
* on init and on every update.
|
|
8
|
+
*
|
|
9
|
+
* Sources (in this order; first existing wins):
|
|
10
|
+
* 1. <packageRoot>/dist/scaffold/templates/jobs/instar/ (npm-installed)
|
|
11
|
+
* 2. <packageRoot>/src/scaffold/templates/jobs/instar/ (in-tree dev)
|
|
12
|
+
*
|
|
13
|
+
* Targets:
|
|
14
|
+
* .instar/jobs/instar/<slug>.md
|
|
15
|
+
* .instar/jobs/schedule/<slug>.json
|
|
16
|
+
* .instar/jobs/instar.lock.json (copied from <packageRoot>/dist/jobs/)
|
|
17
|
+
* .instar/keys/instar-release-pub.pem (copied from <packageRoot>/dist/keys/)
|
|
18
|
+
*
|
|
19
|
+
* Per the Seamless Migration Guarantee (spec §Seamless Migration Guarantee):
|
|
20
|
+
*
|
|
21
|
+
* - This function NEVER touches `.instar/jobs/user/` (invariant 4).
|
|
22
|
+
* - This function NEVER deletes or overwrites a user-edited body
|
|
23
|
+
* (`.instar/jobs/instar/<slug>.md` is overwritten on update — that's
|
|
24
|
+
* the contract; users who edited a default should fork via Phase 4
|
|
25
|
+
* Dashboard "Unfork" before updating).
|
|
26
|
+
* - When a slug is no longer in the templates dir, its `.instar/jobs/instar/<slug>.md`
|
|
27
|
+
* is removed; the per-slug schedule manifest is moved to retired-defaults
|
|
28
|
+
* (Phase 4-Dashboard surface) and its `enabled` flipped to false.
|
|
29
|
+
*
|
|
30
|
+
* Spec: docs/specs/INSTAR-JOBS-AS-AGENTMD-SPEC.md §Concrete Paths + §PostUpdateMigrator.
|
|
31
|
+
*/
|
|
32
|
+
import fs from 'node:fs';
|
|
33
|
+
import path from 'node:path';
|
|
34
|
+
import yaml from 'js-yaml';
|
|
35
|
+
import { SafeFsExecutor } from '../core/SafeFsExecutor.js';
|
|
36
|
+
const PORT_SENTINEL = '4042';
|
|
37
|
+
export function installBuiltinJobs(opts) {
|
|
38
|
+
const { agentStateDir, packageRoot, port } = opts;
|
|
39
|
+
const templatesDir = resolveTemplatesDir(packageRoot);
|
|
40
|
+
if (!templatesDir) {
|
|
41
|
+
return {
|
|
42
|
+
installed: [],
|
|
43
|
+
retired: [],
|
|
44
|
+
errors: [
|
|
45
|
+
{
|
|
46
|
+
reason: 'No agentmd templates directory found under <packageRoot>/dist/scaffold/templates/jobs/instar/ ' +
|
|
47
|
+
'nor <packageRoot>/src/scaffold/templates/jobs/instar/. Skipping built-in job install.',
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
const installedDir = path.join(agentStateDir, 'jobs', 'instar');
|
|
53
|
+
const scheduleDir = path.join(agentStateDir, 'jobs', 'schedule');
|
|
54
|
+
const userDir = path.join(agentStateDir, 'jobs', 'user');
|
|
55
|
+
const keysDir = path.join(agentStateDir, 'keys');
|
|
56
|
+
fs.mkdirSync(installedDir, { recursive: true });
|
|
57
|
+
fs.mkdirSync(scheduleDir, { recursive: true });
|
|
58
|
+
fs.mkdirSync(keysDir, { recursive: true });
|
|
59
|
+
// User dir is created by Phase 3 migrate; we just verify it stays a
|
|
60
|
+
// regular directory if it exists (defense-in-depth for invariant 4).
|
|
61
|
+
if (fs.existsSync(userDir)) {
|
|
62
|
+
const stat = fs.lstatSync(userDir);
|
|
63
|
+
if (!stat.isDirectory() || stat.isSymbolicLink()) {
|
|
64
|
+
return {
|
|
65
|
+
installed: [],
|
|
66
|
+
retired: [],
|
|
67
|
+
errors: [
|
|
68
|
+
{
|
|
69
|
+
reason: `User namespace at ${userDir} is not a regular directory ` +
|
|
70
|
+
`(symlink or file). Refusing to install built-in jobs — fix this first.`,
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const templateFiles = fs
|
|
77
|
+
.readdirSync(templatesDir)
|
|
78
|
+
.filter((f) => f.endsWith('.md') && f !== '.gitkeep')
|
|
79
|
+
.sort();
|
|
80
|
+
const report = { installed: [], retired: [], errors: [] };
|
|
81
|
+
const shippedSlugs = new Set();
|
|
82
|
+
for (const file of templateFiles) {
|
|
83
|
+
const slug = path.basename(file, '.md');
|
|
84
|
+
shippedSlugs.add(slug);
|
|
85
|
+
let raw = fs.readFileSync(path.join(templatesDir, file), 'utf-8');
|
|
86
|
+
// Substitute the per-agent port. The sentinel `4042` was baked into the
|
|
87
|
+
// template by regen-default-job-templates.mjs; replacing it here keeps
|
|
88
|
+
// the on-disk content in sync with what the agent's runtime expects.
|
|
89
|
+
if (port !== Number(PORT_SENTINEL)) {
|
|
90
|
+
raw = raw.replaceAll(`:-${PORT_SENTINEL}}`, `:-${port}}`);
|
|
91
|
+
}
|
|
92
|
+
const targetMd = path.join(installedDir, file);
|
|
93
|
+
fs.writeFileSync(targetMd, raw, 'utf-8');
|
|
94
|
+
// Generate the per-slug manifest if it doesn't already exist. If the
|
|
95
|
+
// manifest exists, we preserve `enabled` and `disabledAtBodyHash` from
|
|
96
|
+
// the on-disk version (operator may have disabled the default).
|
|
97
|
+
const manifestPath = path.join(scheduleDir, `${slug}.json`);
|
|
98
|
+
let existingEnabled;
|
|
99
|
+
let existingDisabledAtBodyHash;
|
|
100
|
+
if (fs.existsSync(manifestPath)) {
|
|
101
|
+
try {
|
|
102
|
+
const existing = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
|
|
103
|
+
if (typeof existing.enabled === 'boolean')
|
|
104
|
+
existingEnabled = existing.enabled;
|
|
105
|
+
if (typeof existing.disabledAtBodyHash === 'string') {
|
|
106
|
+
existingDisabledAtBodyHash = existing.disabledAtBodyHash;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// malformed; we'll overwrite with a fresh one
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const match = raw.match(/^---\n([\s\S]*?)\n---\n/);
|
|
114
|
+
if (!match) {
|
|
115
|
+
report.errors.push({ slug, reason: 'Template missing YAML frontmatter' });
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
let frontmatter;
|
|
119
|
+
try {
|
|
120
|
+
const parsed = yaml.load(match[1], { schema: yaml.FAILSAFE_SCHEMA });
|
|
121
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
122
|
+
throw new Error('frontmatter must be an object');
|
|
123
|
+
}
|
|
124
|
+
frontmatter = parsed;
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
report.errors.push({ slug, reason: `Failed to parse frontmatter: ${err instanceof Error ? err.message : String(err)}` });
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
const manifest = {
|
|
131
|
+
slug,
|
|
132
|
+
origin: 'instar',
|
|
133
|
+
schedule: frontmatter.schedule,
|
|
134
|
+
enabled: existingEnabled !== undefined ? existingEnabled : frontmatter.enabled !== 'false',
|
|
135
|
+
execute: { type: 'agentmd' },
|
|
136
|
+
manifestVersion: 1,
|
|
137
|
+
};
|
|
138
|
+
if (existingDisabledAtBodyHash) {
|
|
139
|
+
manifest.disabledAtBodyHash = existingDisabledAtBodyHash;
|
|
140
|
+
}
|
|
141
|
+
fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n', 'utf-8');
|
|
142
|
+
report.installed.push(slug);
|
|
143
|
+
}
|
|
144
|
+
// Retire defaults that are no longer shipped.
|
|
145
|
+
if (fs.existsSync(installedDir)) {
|
|
146
|
+
for (const f of fs.readdirSync(installedDir)) {
|
|
147
|
+
if (!f.endsWith('.md'))
|
|
148
|
+
continue;
|
|
149
|
+
const slug = path.basename(f, '.md');
|
|
150
|
+
if (shippedSlugs.has(slug))
|
|
151
|
+
continue;
|
|
152
|
+
// Remove the installed body. The per-slug manifest is left in place
|
|
153
|
+
// with enabled:false and a retiredAt timestamp so the operator can
|
|
154
|
+
// see it in the Dashboard. Spec §Retired-defaults flow.
|
|
155
|
+
try {
|
|
156
|
+
SafeFsExecutor.safeUnlinkSync(path.join(installedDir, f), { operation: 'installBuiltinJobs retire default' });
|
|
157
|
+
const manifestPath = path.join(scheduleDir, `${slug}.json`);
|
|
158
|
+
if (fs.existsSync(manifestPath)) {
|
|
159
|
+
try {
|
|
160
|
+
const existing = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
|
|
161
|
+
existing.enabled = false;
|
|
162
|
+
existing.retiredAt = new Date().toISOString();
|
|
163
|
+
existing.retiredReason = 'instar-default-removed';
|
|
164
|
+
fs.writeFileSync(manifestPath, JSON.stringify(existing, null, 2) + '\n', 'utf-8');
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
// manifest malformed — leave alone
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
report.retired.push(slug);
|
|
171
|
+
}
|
|
172
|
+
catch (err) {
|
|
173
|
+
report.errors.push({ slug, reason: `Failed to retire: ${err instanceof Error ? err.message : String(err)}` });
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// Copy the signed lock-file + public key.
|
|
178
|
+
const lockSrc = path.join(packageRoot, 'dist', 'jobs', 'instar.lock.json');
|
|
179
|
+
const lockDst = path.join(agentStateDir, 'jobs', 'instar.lock.json');
|
|
180
|
+
if (fs.existsSync(lockSrc)) {
|
|
181
|
+
fs.copyFileSync(lockSrc, lockDst);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
// No signed lock-file shipped (build did not have a signing key). Remove
|
|
185
|
+
// any stale lock-file so the runtime sees `absent` → lockTrust=untrusted-no-lockfile.
|
|
186
|
+
if (fs.existsSync(lockDst)) {
|
|
187
|
+
SafeFsExecutor.safeUnlinkSync(lockDst, { operation: 'installBuiltinJobs remove stale lockfile' });
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
const pubSrc = path.join(packageRoot, 'dist', 'keys', 'instar-release-pub.pem');
|
|
191
|
+
const pubDst = path.join(keysDir, 'instar-release-pub.pem');
|
|
192
|
+
if (fs.existsSync(pubSrc)) {
|
|
193
|
+
fs.copyFileSync(pubSrc, pubDst);
|
|
194
|
+
}
|
|
195
|
+
return report;
|
|
196
|
+
}
|
|
197
|
+
function resolveTemplatesDir(packageRoot) {
|
|
198
|
+
const candidates = [
|
|
199
|
+
path.join(packageRoot, 'dist', 'scaffold', 'templates', 'jobs', 'instar'),
|
|
200
|
+
path.join(packageRoot, 'src', 'scaffold', 'templates', 'jobs', 'instar'),
|
|
201
|
+
];
|
|
202
|
+
for (const c of candidates) {
|
|
203
|
+
if (fs.existsSync(c) && fs.statSync(c).isDirectory()) {
|
|
204
|
+
// Verify there's at least one .md file (otherwise we'd skip silently).
|
|
205
|
+
const hasMd = fs.readdirSync(c).some((f) => f.endsWith('.md'));
|
|
206
|
+
if (hasMd)
|
|
207
|
+
return c;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return null;
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=InstallBuiltinJobs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InstallBuiltinJobs.js","sourceRoot":"","sources":["../../src/scheduler/InstallBuiltinJobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobLoader.d.ts","sourceRoot":"","sources":["../../src/scheduler/JobLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,aAAa,EAA0B,MAAM,kBAAkB,CAAC;AAoD9E;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"JobLoader.d.ts","sourceRoot":"","sources":["../../src/scheduler/JobLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,aAAa,EAA0B,MAAM,kBAAkB,CAAC;AAoD9E;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAqC1D;AA4ID;;6DAE6D;AAC7D,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAkG9D;AA4CD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAqF9E"}
|
|
@@ -95,8 +95,56 @@ export function loadJobs(jobsFile) {
|
|
|
95
95
|
const merged = mergeLegacyWithAgentMd(legacyJobs, agentMdResult.jobs);
|
|
96
96
|
// Grounding-by-default audit — warn about jobs missing grounding config
|
|
97
97
|
auditGrounding(merged);
|
|
98
|
+
// Phase 6 deprecation audit — warn about legacy execute.type: 'prompt'
|
|
99
|
+
// entries for slugs that have a shipped agentmd default. These are
|
|
100
|
+
// structurally inert (the agentmd entry shadows them) but their presence
|
|
101
|
+
// means the operator hasn't confirmed migration. Two-release removal
|
|
102
|
+
// cycle per INSTAR-JOBS-AS-AGENTMD spec §Rollout step 6.
|
|
103
|
+
auditLegacyPromptDeprecation(legacyJobs, agentMdResult.jobs, jobsRootDir);
|
|
98
104
|
return merged;
|
|
99
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Phase 6 — deprecation audit for legacy `execute.type: 'prompt'` entries
|
|
108
|
+
* whose slug also appears as a shipped agentmd default. Emits a single
|
|
109
|
+
* deprecation warning per boot per affected slug.
|
|
110
|
+
*
|
|
111
|
+
* The warning fires only when:
|
|
112
|
+
* - the slug is present in BOTH legacy jobs.json AND the per-slug
|
|
113
|
+
* manifest (shadowed); AND
|
|
114
|
+
* - the legacy entry's execute.type is 'prompt'; AND
|
|
115
|
+
* - `.migration-complete.json` is NOT present (operator hasn't
|
|
116
|
+
* confirmed migration yet).
|
|
117
|
+
*
|
|
118
|
+
* When `.migration-complete.json` is present, the legacy entries are about
|
|
119
|
+
* to be removed by the release-cut gate, so the deprecation warning would
|
|
120
|
+
* be noise.
|
|
121
|
+
*
|
|
122
|
+
* Spec: docs/specs/INSTAR-JOBS-AS-AGENTMD-SPEC.md §Rollout step 6.
|
|
123
|
+
*/
|
|
124
|
+
function auditLegacyPromptDeprecation(legacy, agentMd, jobsRootDir) {
|
|
125
|
+
if (legacy.length === 0 || agentMd.length === 0)
|
|
126
|
+
return;
|
|
127
|
+
const completedMarker = path.join(jobsRootDir, '.migration-complete.json');
|
|
128
|
+
if (fs.existsSync(completedMarker))
|
|
129
|
+
return;
|
|
130
|
+
const shippedAgentMdSlugs = new Set(agentMd.filter((j) => j.origin === 'instar').map((j) => j.slug));
|
|
131
|
+
const deprecated = [];
|
|
132
|
+
for (const j of legacy) {
|
|
133
|
+
if (j.execute?.type !== 'prompt')
|
|
134
|
+
continue;
|
|
135
|
+
if (!shippedAgentMdSlugs.has(j.slug))
|
|
136
|
+
continue;
|
|
137
|
+
deprecated.push(j.slug);
|
|
138
|
+
}
|
|
139
|
+
if (deprecated.length === 0)
|
|
140
|
+
return;
|
|
141
|
+
console.warn(`[JobLoader] DEPRECATION: ${deprecated.length} legacy jobs.json ` +
|
|
142
|
+
`entry(ies) with execute.type:"prompt" shadow agentmd defaults: ` +
|
|
143
|
+
`${deprecated.join(', ')}. These will be removed two releases after ` +
|
|
144
|
+
`Dashboard ships the "Confirm migration complete" action. ` +
|
|
145
|
+
`Run \`instar job migrate\` (or wait for the next update's auto-run) ` +
|
|
146
|
+
`then confirm completion via Dashboard to suppress this warning.`);
|
|
147
|
+
}
|
|
100
148
|
/**
|
|
101
149
|
* Load and validate the legacy jobs.json. Extracted to keep the new
|
|
102
150
|
* agentmd path additive — this function is byte-equivalent to the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobLoader.js","sourceRoot":"","sources":["../../src/scheduler/JobLoader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"JobLoader.js","sourceRoot":"","sources":["../../src/scheduler/JobLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MigrationInvariants — runtime verifier for the Seamless Migration Guarantee.
|
|
3
|
+
*
|
|
4
|
+
* Spec: docs/specs/INSTAR-JOBS-AS-AGENTMD-SPEC.md §Gate wiring (PostUpdateMigrator runtime gate).
|
|
5
|
+
*
|
|
6
|
+
* Re-verifies invariants 1, 2, 4 of §Seamless Migration Guarantee against
|
|
7
|
+
* staged on-disk state AFTER `jobsMigrate` completes but BEFORE the
|
|
8
|
+
* PostUpdateMigrator considers the migration final. Failure produces a
|
|
9
|
+
* structured result the caller uses to roll back via
|
|
10
|
+
* `jobsMigrate({ abandon: true })` (fail-closed, invariant 9).
|
|
11
|
+
*
|
|
12
|
+
* Invariant 6 (in-flight protection) is structurally satisfied at update-
|
|
13
|
+
* apply time because no jobs run mid-update; the migrator runs BEFORE the
|
|
14
|
+
* new scheduler instance comes up. This module's contract does NOT cover
|
|
15
|
+
* invariant 6 — the caller documents that boundary.
|
|
16
|
+
*/
|
|
17
|
+
export interface InvariantCheckOptions {
|
|
18
|
+
agentStateDir: string;
|
|
19
|
+
/** The pre-migration jobs.json content as parsed JSON. The caller MUST
|
|
20
|
+
* read this before invoking `jobsMigrate`, since the migration may
|
|
21
|
+
* rewrite the file's effective semantics by adding markers, etc. */
|
|
22
|
+
preMigrationJobs: any[];
|
|
23
|
+
/** Optional user-namespace mtime+content snapshot taken BEFORE migration.
|
|
24
|
+
* When provided, invariant 4 (user namespace untouched) is asserted by
|
|
25
|
+
* comparing the post-migration state against this snapshot. Absent → the
|
|
26
|
+
* invariant is marked `skipped` rather than `failed`. */
|
|
27
|
+
preMigrationUserSnapshot?: UserNamespaceSnapshot;
|
|
28
|
+
}
|
|
29
|
+
export interface UserNamespaceSnapshot {
|
|
30
|
+
/** Map of `<slug>.md` → file content. */
|
|
31
|
+
files: Record<string, string>;
|
|
32
|
+
/** Map of `<slug>.md` → mtimeMs. */
|
|
33
|
+
mtimes: Record<string, number>;
|
|
34
|
+
}
|
|
35
|
+
export interface InvariantResult {
|
|
36
|
+
invariant: 1 | 2 | 4;
|
|
37
|
+
status: 'passed' | 'failed' | 'skipped';
|
|
38
|
+
reason?: string;
|
|
39
|
+
details?: Record<string, unknown>;
|
|
40
|
+
}
|
|
41
|
+
export interface VerificationOutcome {
|
|
42
|
+
ok: boolean;
|
|
43
|
+
results: InvariantResult[];
|
|
44
|
+
/** A single human-readable summary suitable for surfacing to the operator. */
|
|
45
|
+
summary: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Capture the current state of `.instar/jobs/user/` for later invariant-4
|
|
49
|
+
* comparison. Cheap — used by the auto-migrate runner.
|
|
50
|
+
*/
|
|
51
|
+
export declare function snapshotUserNamespace(agentStateDir: string): UserNamespaceSnapshot;
|
|
52
|
+
/**
|
|
53
|
+
* Verify invariants 1, 2, 4 against the on-disk state. Caller is responsible
|
|
54
|
+
* for ensuring the state being verified is "post-jobsMigrate-completed."
|
|
55
|
+
*/
|
|
56
|
+
export declare function verifyMigrationInvariants(opts: InvariantCheckOptions): VerificationOutcome;
|
|
57
|
+
/**
|
|
58
|
+
* Compute a stable canonical hash of a pre-migration entry for diff
|
|
59
|
+
* reporting. Used by Invariant 2 internally; exported for tests.
|
|
60
|
+
*/
|
|
61
|
+
export declare function canonicalScheduleHash(entry: any): string;
|
|
62
|
+
//# sourceMappingURL=MigrationInvariants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrationInvariants.d.ts","sourceRoot":"","sources":["../../src/scheduler/MigrationInvariants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB;;yEAEqE;IACrE,gBAAgB,EAAE,GAAG,EAAE,CAAC;IACxB;;;8DAG0D;IAC1D,wBAAwB,CAAC,EAAE,qBAAqB,CAAC;CAClD;AAED,MAAM,WAAW,qBAAqB;IACpC,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,qBAAqB,CAelF;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,qBAAqB,GAAG,mBAAmB,CAc1F;AAkKD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CASxD"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MigrationInvariants — runtime verifier for the Seamless Migration Guarantee.
|
|
3
|
+
*
|
|
4
|
+
* Spec: docs/specs/INSTAR-JOBS-AS-AGENTMD-SPEC.md §Gate wiring (PostUpdateMigrator runtime gate).
|
|
5
|
+
*
|
|
6
|
+
* Re-verifies invariants 1, 2, 4 of §Seamless Migration Guarantee against
|
|
7
|
+
* staged on-disk state AFTER `jobsMigrate` completes but BEFORE the
|
|
8
|
+
* PostUpdateMigrator considers the migration final. Failure produces a
|
|
9
|
+
* structured result the caller uses to roll back via
|
|
10
|
+
* `jobsMigrate({ abandon: true })` (fail-closed, invariant 9).
|
|
11
|
+
*
|
|
12
|
+
* Invariant 6 (in-flight protection) is structurally satisfied at update-
|
|
13
|
+
* apply time because no jobs run mid-update; the migrator runs BEFORE the
|
|
14
|
+
* new scheduler instance comes up. This module's contract does NOT cover
|
|
15
|
+
* invariant 6 — the caller documents that boundary.
|
|
16
|
+
*/
|
|
17
|
+
import fs from 'node:fs';
|
|
18
|
+
import path from 'node:path';
|
|
19
|
+
import crypto from 'node:crypto';
|
|
20
|
+
/**
|
|
21
|
+
* Capture the current state of `.instar/jobs/user/` for later invariant-4
|
|
22
|
+
* comparison. Cheap — used by the auto-migrate runner.
|
|
23
|
+
*/
|
|
24
|
+
export function snapshotUserNamespace(agentStateDir) {
|
|
25
|
+
const userDir = path.join(agentStateDir, 'jobs', 'user');
|
|
26
|
+
const snap = { files: {}, mtimes: {} };
|
|
27
|
+
if (!fs.existsSync(userDir))
|
|
28
|
+
return snap;
|
|
29
|
+
for (const f of fs.readdirSync(userDir)) {
|
|
30
|
+
if (!f.endsWith('.md'))
|
|
31
|
+
continue;
|
|
32
|
+
const p = path.join(userDir, f);
|
|
33
|
+
try {
|
|
34
|
+
snap.files[f] = fs.readFileSync(p, 'utf-8');
|
|
35
|
+
snap.mtimes[f] = fs.statSync(p).mtimeMs;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Skip unreadable entries — they couldn't have been touched by the migrator either.
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return snap;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Verify invariants 1, 2, 4 against the on-disk state. Caller is responsible
|
|
45
|
+
* for ensuring the state being verified is "post-jobsMigrate-completed."
|
|
46
|
+
*/
|
|
47
|
+
export function verifyMigrationInvariants(opts) {
|
|
48
|
+
const results = [];
|
|
49
|
+
results.push(verifyInvariant1ZeroJobLoss(opts));
|
|
50
|
+
results.push(verifyInvariant2ZeroScheduleDrift(opts));
|
|
51
|
+
results.push(verifyInvariant4UserNamespaceUntouched(opts));
|
|
52
|
+
const failed = results.filter((r) => r.status === 'failed');
|
|
53
|
+
const ok = failed.length === 0;
|
|
54
|
+
const summary = ok
|
|
55
|
+
? `All migration invariants verified (${results.filter((r) => r.status === 'passed').length} passed, ${results.filter((r) => r.status === 'skipped').length} skipped).`
|
|
56
|
+
: `Migration invariant verification FAILED: ${failed.map((r) => `#${r.invariant} ${r.reason ?? ''}`).join('; ')}`;
|
|
57
|
+
return { ok, results, summary };
|
|
58
|
+
}
|
|
59
|
+
// ── Invariant 1: Zero job loss ──────────────────────────────────────────
|
|
60
|
+
function verifyInvariant1ZeroJobLoss(opts) {
|
|
61
|
+
const { agentStateDir, preMigrationJobs } = opts;
|
|
62
|
+
const scheduleDir = path.join(agentStateDir, 'jobs', 'schedule');
|
|
63
|
+
const userDir = path.join(agentStateDir, 'jobs', 'user');
|
|
64
|
+
if (!fs.existsSync(scheduleDir)) {
|
|
65
|
+
// No schedule dir means nothing was migrated. That's a failure ONLY if
|
|
66
|
+
// there were prompt entries in jobs.json to migrate. Otherwise it's a
|
|
67
|
+
// no-op (e.g., the agent only has script/skill defaults).
|
|
68
|
+
const hadPromptEntries = preMigrationJobs.some((e) => e && typeof e === 'object' && e.execute && e.execute.type === 'prompt');
|
|
69
|
+
if (hadPromptEntries) {
|
|
70
|
+
return {
|
|
71
|
+
invariant: 1,
|
|
72
|
+
status: 'failed',
|
|
73
|
+
reason: 'schedule directory does not exist after migration despite prompt-typed entries in jobs.json',
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
return { invariant: 1, status: 'passed' };
|
|
77
|
+
}
|
|
78
|
+
const scheduleSlugs = new Set(fs
|
|
79
|
+
.readdirSync(scheduleDir)
|
|
80
|
+
.filter((f) => f.endsWith('.json'))
|
|
81
|
+
.map((f) => path.basename(f, '.json')));
|
|
82
|
+
// Also accept renamed entries (slug → <slug>-user).
|
|
83
|
+
const userSlugs = new Set(fs.existsSync(userDir)
|
|
84
|
+
? fs.readdirSync(userDir).filter((f) => f.endsWith('.md')).map((f) => path.basename(f, '.md'))
|
|
85
|
+
: []);
|
|
86
|
+
const missing = [];
|
|
87
|
+
for (const entry of preMigrationJobs) {
|
|
88
|
+
if (!entry || typeof entry !== 'object' || typeof entry.slug !== 'string')
|
|
89
|
+
continue;
|
|
90
|
+
const slug = entry.slug;
|
|
91
|
+
if (scheduleSlugs.has(slug))
|
|
92
|
+
continue;
|
|
93
|
+
if (scheduleSlugs.has(`${slug}-user`))
|
|
94
|
+
continue;
|
|
95
|
+
if (userSlugs.has(slug))
|
|
96
|
+
continue;
|
|
97
|
+
if (userSlugs.has(`${slug}-user`))
|
|
98
|
+
continue;
|
|
99
|
+
// Non-prompt entries (script/skill) are documented to remain in jobs.json.
|
|
100
|
+
if (entry.execute && entry.execute.type !== 'prompt')
|
|
101
|
+
continue;
|
|
102
|
+
missing.push(slug);
|
|
103
|
+
}
|
|
104
|
+
if (missing.length > 0) {
|
|
105
|
+
return {
|
|
106
|
+
invariant: 1,
|
|
107
|
+
status: 'failed',
|
|
108
|
+
reason: `${missing.length} pre-migration slug(s) have no post-migration manifest or user fork: ${missing.join(', ')}`,
|
|
109
|
+
details: { missingSlugs: missing },
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
return { invariant: 1, status: 'passed' };
|
|
113
|
+
}
|
|
114
|
+
// ── Invariant 2: Zero schedule drift ────────────────────────────────────
|
|
115
|
+
function verifyInvariant2ZeroScheduleDrift(opts) {
|
|
116
|
+
const { agentStateDir, preMigrationJobs } = opts;
|
|
117
|
+
const scheduleDir = path.join(agentStateDir, 'jobs', 'schedule');
|
|
118
|
+
if (!fs.existsSync(scheduleDir)) {
|
|
119
|
+
return { invariant: 2, status: 'skipped', reason: 'no schedule directory to verify' };
|
|
120
|
+
}
|
|
121
|
+
const driftedSlugs = [];
|
|
122
|
+
for (const entry of preMigrationJobs) {
|
|
123
|
+
if (!entry || typeof entry !== 'object' || typeof entry.slug !== 'string')
|
|
124
|
+
continue;
|
|
125
|
+
if (entry.execute && entry.execute.type !== 'prompt')
|
|
126
|
+
continue;
|
|
127
|
+
const slug = entry.slug;
|
|
128
|
+
const manifestPath = path.join(scheduleDir, `${slug}.json`);
|
|
129
|
+
if (!fs.existsSync(manifestPath))
|
|
130
|
+
continue; // forked/renamed — invariant 1 handled
|
|
131
|
+
let manifest;
|
|
132
|
+
try {
|
|
133
|
+
manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
driftedSlugs.push({ slug, field: 'manifest', pre: 'parseable', post: 'malformed' });
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
if (typeof manifest.schedule === 'string' && manifest.schedule !== entry.schedule) {
|
|
140
|
+
driftedSlugs.push({ slug, field: 'schedule', pre: entry.schedule, post: manifest.schedule });
|
|
141
|
+
}
|
|
142
|
+
const preEnabled = entry.enabled !== false;
|
|
143
|
+
const postEnabled = manifest.enabled !== false;
|
|
144
|
+
if (preEnabled !== postEnabled) {
|
|
145
|
+
driftedSlugs.push({ slug, field: 'enabled', pre: preEnabled, post: postEnabled });
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (driftedSlugs.length > 0) {
|
|
149
|
+
return {
|
|
150
|
+
invariant: 2,
|
|
151
|
+
status: 'failed',
|
|
152
|
+
reason: `${driftedSlugs.length} entries drifted: ${driftedSlugs.map((d) => `${d.slug}/${d.field}`).join(', ')}`,
|
|
153
|
+
details: { driftedSlugs },
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
return { invariant: 2, status: 'passed' };
|
|
157
|
+
}
|
|
158
|
+
// ── Invariant 4: User namespace untouched ──────────────────────────────
|
|
159
|
+
function verifyInvariant4UserNamespaceUntouched(opts) {
|
|
160
|
+
const { agentStateDir, preMigrationUserSnapshot } = opts;
|
|
161
|
+
if (!preMigrationUserSnapshot) {
|
|
162
|
+
return {
|
|
163
|
+
invariant: 4,
|
|
164
|
+
status: 'skipped',
|
|
165
|
+
reason: 'no pre-migration user-namespace snapshot provided',
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
const userDir = path.join(agentStateDir, 'jobs', 'user');
|
|
169
|
+
const currentFiles = new Set();
|
|
170
|
+
const violations = [];
|
|
171
|
+
if (fs.existsSync(userDir)) {
|
|
172
|
+
for (const f of fs.readdirSync(userDir)) {
|
|
173
|
+
if (!f.endsWith('.md'))
|
|
174
|
+
continue;
|
|
175
|
+
currentFiles.add(f);
|
|
176
|
+
if (preMigrationUserSnapshot.files[f] === undefined) {
|
|
177
|
+
// Added — only allowed if jobsMigrate did an explicit fork. We can't
|
|
178
|
+
// distinguish here, so this is informational, not a violation.
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
const currentContent = fs.readFileSync(path.join(userDir, f), 'utf-8');
|
|
182
|
+
if (currentContent !== preMigrationUserSnapshot.files[f]) {
|
|
183
|
+
violations.push({ file: f, kind: 'modified' });
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
for (const f of Object.keys(preMigrationUserSnapshot.files)) {
|
|
188
|
+
if (!currentFiles.has(f))
|
|
189
|
+
violations.push({ file: f, kind: 'removed' });
|
|
190
|
+
}
|
|
191
|
+
if (violations.length > 0) {
|
|
192
|
+
return {
|
|
193
|
+
invariant: 4,
|
|
194
|
+
status: 'failed',
|
|
195
|
+
reason: `${violations.length} user-namespace file(s) modified or removed: ${violations.map((v) => `${v.file} (${v.kind})`).join(', ')}`,
|
|
196
|
+
details: { violations },
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
return { invariant: 4, status: 'passed' };
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Compute a stable canonical hash of a pre-migration entry for diff
|
|
203
|
+
* reporting. Used by Invariant 2 internally; exported for tests.
|
|
204
|
+
*/
|
|
205
|
+
export function canonicalScheduleHash(entry) {
|
|
206
|
+
const canonical = JSON.stringify({
|
|
207
|
+
slug: entry.slug,
|
|
208
|
+
schedule: entry.schedule,
|
|
209
|
+
enabled: entry.enabled !== false,
|
|
210
|
+
priority: entry.priority,
|
|
211
|
+
model: entry.model,
|
|
212
|
+
});
|
|
213
|
+
return 'sha256:' + crypto.createHash('sha256').update(canonical).digest('hex');
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=MigrationInvariants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrationInvariants.js","sourceRoot":"","sources":["../../src/scheduler/MigrationInvariants.ts"],"names":[],"mappings":"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"}
|