@deftai/directive 0.119.6 → 0.119.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli-package-version.d.ts +3 -0
- package/dist/cli-package-version.js +23 -0
- package/dist/cli-router/route-argv.js +1 -0
- package/dist/dispatch.d.ts +1 -1
- package/dist/dispatch.js +12 -3
- package/dist/doctor.js +28 -25
- package/dist/identity-banner.d.ts +13 -0
- package/dist/identity-banner.js +19 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +4 -5
- package/dist/plan-sequence.js +11 -1
- package/dist/verify-plan-sequence.js +14 -3
- package/package.json +3 -3
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
const FALLBACK_VERSION = "0.0.0";
|
|
5
|
+
function parsePackageVersion(raw) {
|
|
6
|
+
const parsed = JSON.parse(raw);
|
|
7
|
+
if (parsed === null || typeof parsed !== "object") {
|
|
8
|
+
return FALLBACK_VERSION;
|
|
9
|
+
}
|
|
10
|
+
const version = parsed.version;
|
|
11
|
+
return typeof version === "string" && version.length > 0 ? version : FALLBACK_VERSION;
|
|
12
|
+
}
|
|
13
|
+
/** Reads `@deftai/directive` version from the installed CLI package.json adjacent to dist/ or src/. */
|
|
14
|
+
export function readCliPackageVersion() {
|
|
15
|
+
try {
|
|
16
|
+
const pkgPath = join(dirname(fileURLToPath(import.meta.url)), "..", "package.json");
|
|
17
|
+
return parsePackageVersion(readFileSync(pkgPath, "utf8"));
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return FALLBACK_VERSION;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=cli-package-version.js.map
|
package/dist/dispatch.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export interface DispatchIo {
|
|
|
12
12
|
/** CLI modules in packages/cli/src (excluding parity harnesses and bin/index). */
|
|
13
13
|
export declare const CLI_MODULE_VERBS: readonly ["agents-refresh", "cache", "check", "capacity-backfill", "capacity-show", "codebase-default-extractor", "codebase-map", "codebase-map-fresh", "codebase-projection-registry", "codebase-provider", "doctor", "install-upgrade", "install-uninstall", "migrate-preflight", "migrate-xbrief", "migrate-category-b", "framework-check-updates", "hook-dispatch", "umbrella-current-shape", "changelog-check", "change-init", "commit-lint", "coverage-hotspots", "policy", "authz", "escalation-cli", "pr-closing-keywords", "pr-merge-readiness", "pr-monitor", "pr-protected-issues", "pr-wait-mergeable", "pr-watch", "pr-finish-loop", "directive-finish-loop", "preflight-cache", "preflight-gh", "probe-session", "release", "release-e2e", "release-publish", "release-rollback", "release-wait-npm", "scope-lifecycle", "scope-record-approved-scope", "scope-record-observable-scope", "scope-record-intent-constraint", "scm-sync-default", "lifecycle-event", "lifecycle-stats", "session-start", "session-ready", "occupancy-steal", "occupancy-release", "occupancy-heartbeat", "occupancy-grant", "plan-sequence", "slice", "subagent-monitor", "toolchain-check", "triage-actions", "triage-bootstrap", "triage-bulk", "triage-classify", "triage-strip-withdrawn", "triage-evaluate", "triage-help", "triage-queue", "triage-reconcile", "triage-refresh", "triage-scope", "triage-scope-drift", "triage-smoketest", "triage-subscribe", "triage-summary", "triage-welcome", "ts-check-lane", "vbrief-activate", "vbrief-build", "vbrief-preflight", "vbrief-reconcile", "vbrief-validate", "vbrief-validation", "xbrief-create", "xbrief-verify", "verify-branch", "verify-encoding", "verify-forward-coverage", "verify-test-boundary", "verify-scope-provenance", "verify-consumer-check-contract", "verify-hooks-installed", "verify-investigation", "verify-judgment-gates", "verify-no-task-runtime", "validate-links", "validate-strategy-output", "verify-biome-config", "verify-bridge-drift", "verify-capacity", "verify-contained-writes", "verify-telemetry-coverage", "verify-content-manifest", "verify-deposit-closure", "verify-consumer-hard-stops", "verify-closing-keywords", "verify-skill-external-fetch-gate", "verify-semantic-single-source", "verify-contract-drift", "verify-cursor-tier1", "verify-openclaw-tier1", "verify-go-freeze", "verify-scm-boundary", "verify-session-ritual", "verify-plan-sequence", "verify-stubs", "verify-xbrief-drift", "verify-spec-prd-fresh", "rule-ownership-lint", "verify-story-ready", "verify-review-monitor", "verify-l4-owner", "verify-subagent-alive", "verify-subagent-steer", "review-monitor-register", "review-monitor-release", "verify-tools", "verify-wip-cap", "verify-orphan-active", "verify-pr-closeout-attestable", "verify-lifecycle-visible", "verify-completed-tracked", "verify-completed-write-guard", "verify-literal-ac", "verify-ac", "verify-agents-md-budget", "verify-agents-md-advisory", "verify-eval-health-relocation", "verify-eval-triggers-relocation", "verify-evaluator-surface", "verify-observable-scope", "verify-intent-constraint", "verify-consumer-test-lane", "eval-health", "eval-run", "eval-report", "eval-triggers"];
|
|
14
14
|
/** Core-only CLI entrypoints without a packages/cli wrapper. */
|
|
15
|
-
export declare const CORE_MODULE_VERBS: readonly ["scm", "scm-readiness", "github-auth-modes", "github-body", "issue-emit", "issue-ingest", "issue-sync-from-xbrief", "reconcile-issues", "swarm-launch", "swarm-complete-cohort", "swarm-finalize-cohort", "swarm-pre-dispatch", "swarm-readiness", "swarm-routing-verify", "swarm-routing-set", "swarm-verify-review-clean", "swarm-worktrees", "framework-commands", "pack-render", "packs-slice", "prd-render", "export-spec", "project-render", "roadmap-render", "rule-map", "spec-render", "spec-validate", "code-structure-validate", "pack-migrate-skills", "pack-migrate-rules", "pack-migrate-strategies", "pack-migrate-patterns", "pack-migrate-swarm-spec", "policy-set", "setup-ghx", "scope-undo", "scope-demote", "scope-decompose", "changelog-resolve-unreleased", "architecture-preflight-sor", "feedback-file", "value-readback", "product-signal", "freshness-report", "decision-write", "decision-list", "docs-impact"];
|
|
15
|
+
export declare const CORE_MODULE_VERBS: readonly ["scm", "scm-readiness", "github-auth-modes", "github-body", "issue-emit", "issue-ingest", "issue-sync-from-xbrief", "reconcile-issues", "swarm-launch", "swarm-complete-cohort", "swarm-finalize-cohort", "swarm-pre-dispatch", "swarm-readiness", "swarm-routing-verify", "swarm-routing-set", "swarm-verify-review-clean", "swarm-worktrees", "framework-commands", "pack-render", "packs-slice", "prd-render", "export-spec", "project-render", "project-write-narratives", "roadmap-render", "rule-map", "spec-render", "spec-validate", "code-structure-validate", "pack-migrate-skills", "pack-migrate-rules", "pack-migrate-strategies", "pack-migrate-patterns", "pack-migrate-swarm-spec", "policy-set", "setup-ghx", "scope-undo", "scope-demote", "scope-decompose", "changelog-resolve-unreleased", "architecture-preflight-sor", "feedback-file", "value-readback", "product-signal", "freshness-report", "decision-write", "decision-list", "docs-impact"];
|
|
16
16
|
/** Colon aliases for triage-actions (mirrors cli-router SUBCOMMAND_ROUTES). */
|
|
17
17
|
export declare const TRIAGE_ACTION_ALIAS_SUBCOMMANDS: Readonly<Record<string, string>>;
|
|
18
18
|
/** Colon aliases for policy subcommands (mirrors cli-router SUBCOMMAND_ROUTES). */
|
package/dist/dispatch.js
CHANGED
|
@@ -14,6 +14,7 @@ import { appendAuditLog, disclosureLine, migrateLegacyPolicyKey, PLAN_POLICY_KEY
|
|
|
14
14
|
import { defaultWhich } from "@deftai/directive-core/scm";
|
|
15
15
|
import { KNOWN_SUBAGENT_BACKEND_IDS, probeSubagentBackends, resolveSwarmSubagentBackend, } from "@deftai/directive-core/swarm";
|
|
16
16
|
import { withProjectDefinitionMutation, } from "@deftai/directive-core/vbrief-build";
|
|
17
|
+
import { identityBanner } from "./identity-banner.js";
|
|
17
18
|
const HANDLER_KEYS = [
|
|
18
19
|
"run",
|
|
19
20
|
"main",
|
|
@@ -198,6 +199,7 @@ export const CORE_MODULE_VERBS = [
|
|
|
198
199
|
"prd-render",
|
|
199
200
|
"export-spec",
|
|
200
201
|
"project-render",
|
|
202
|
+
"project-write-narratives",
|
|
201
203
|
"roadmap-render",
|
|
202
204
|
"rule-map",
|
|
203
205
|
"spec-render",
|
|
@@ -413,6 +415,7 @@ export const VERB_ALIASES = {
|
|
|
413
415
|
"spec:render": "spec-render",
|
|
414
416
|
"prd:render": "prd-render",
|
|
415
417
|
"project:render": "project-render",
|
|
418
|
+
"project:write-narratives": "project-write-narratives",
|
|
416
419
|
"docs:rule-map": "rule-map",
|
|
417
420
|
"project:export-spec": "export-spec",
|
|
418
421
|
"pr:watch": "pr-watch",
|
|
@@ -2497,6 +2500,10 @@ async function loadCoreModuleHandler(verb, io) {
|
|
|
2497
2500
|
const { runProjectRenderCli } = await import("./render-cli/project-render-cli.js");
|
|
2498
2501
|
return (argv) => runProjectRenderCli(argv);
|
|
2499
2502
|
}
|
|
2503
|
+
case "project-write-narratives": {
|
|
2504
|
+
const { writePhase2NarrativesMain } = await import("@deftai/directive-core/dist/render/phase2-narratives-cli.js");
|
|
2505
|
+
return (argv) => writePhase2NarrativesMain(argv);
|
|
2506
|
+
}
|
|
2500
2507
|
case "rule-map": {
|
|
2501
2508
|
const { runRuleMapCli } = await import("./render-cli/rule-map-cli.js");
|
|
2502
2509
|
return (argv) => runRuleMapCli(argv);
|
|
@@ -2770,6 +2777,10 @@ const CURATED_HELP_GROUPS = [
|
|
|
2770
2777
|
title: "Project artifacts",
|
|
2771
2778
|
commands: [
|
|
2772
2779
|
{ name: "project:render", summary: "Render PROJECT-DEFINITION projection" },
|
|
2780
|
+
{
|
|
2781
|
+
name: "project:write-narratives",
|
|
2782
|
+
summary: "Store Phase 2 narratives in PROJECT-DEFINITION without policy keys",
|
|
2783
|
+
},
|
|
2773
2784
|
{ name: "spec:render", summary: "Render specification projection" },
|
|
2774
2785
|
],
|
|
2775
2786
|
},
|
|
@@ -2824,7 +2835,6 @@ async function invokeHandler(handler, argv) {
|
|
|
2824
2835
|
const code = await handler(argv);
|
|
2825
2836
|
return typeof code === "number" ? code : 0;
|
|
2826
2837
|
}
|
|
2827
|
-
const CLI_PACKAGE = "@deftai/directive";
|
|
2828
2838
|
const PLAN_SEQUENCE_VERBS = "set|current|clear|advance";
|
|
2829
2839
|
/**
|
|
2830
2840
|
* Unknown-colon-verb remediation (#3439 / #2652).
|
|
@@ -2843,8 +2853,7 @@ export function unknownColonVerbHint(verb) {
|
|
|
2843
2853
|
`Hyphen stem: ${hyphen}.\n`);
|
|
2844
2854
|
}
|
|
2845
2855
|
function versionBanner() {
|
|
2846
|
-
|
|
2847
|
-
return `${CLI_PACKAGE} (engine: ${info.name}@${info.version})\n`;
|
|
2856
|
+
return `${identityBanner()}\n`;
|
|
2848
2857
|
}
|
|
2849
2858
|
/** Dispatch argv to a registered verb; returns the handler exit code. */
|
|
2850
2859
|
export async function dispatch(argv, io = defaultIo()) {
|
package/dist/doctor.js
CHANGED
|
@@ -100,42 +100,45 @@ async function resolveEngineContentRoot() {
|
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
export async function run(argv) {
|
|
103
|
-
//
|
|
104
|
-
//
|
|
105
|
-
// --json (so the machine-readable report stays valid), on --help, and when unknown flags
|
|
106
|
-
// are present (so an invalid invocation still mirrors the core error path exactly).
|
|
103
|
+
// Human advisory lines stay off --json so the machine report stays one object.
|
|
104
|
+
// Deposit hygiene is still passed into cmdDoctor, including --json (#4812).
|
|
107
105
|
const flags = parseDoctorFlags(argv);
|
|
108
|
-
let depositHygieneExit = 0;
|
|
109
106
|
const installedRoot = await resolveEngineContentRoot();
|
|
110
107
|
if (installedRoot !== null) {
|
|
111
108
|
setDoctorAgentsTemplateRoot(installedRoot);
|
|
112
109
|
}
|
|
113
110
|
try {
|
|
114
|
-
if (
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
111
|
+
if (flags.help || flags.unknown.length > 0) {
|
|
112
|
+
return cmdDoctor(argv);
|
|
113
|
+
}
|
|
114
|
+
const projectRoot = flags.projectRoot ?? process.cwd();
|
|
115
|
+
const walkRoot = resolveContentPackageRoot(projectRoot);
|
|
116
|
+
const depositResult = evaluateDepositFileSetHygiene(projectRoot, {
|
|
117
|
+
contentRoot: installedRoot ?? undefined,
|
|
118
|
+
walkRoot,
|
|
119
|
+
installedRoot,
|
|
120
|
+
});
|
|
121
|
+
const closure = evaluateInstalledDepositClosure(projectRoot);
|
|
122
|
+
// Package-absent files stay diagnostic unless --full. A real hygiene failure
|
|
123
|
+
// (full file-set or declared closure) is the one status cmdDoctor shares.
|
|
124
|
+
const fileSetFailed = flags.full && !depositResult.skipped && depositResult.absent.length > 0;
|
|
125
|
+
const closureFailed = flags.full && !closure.skipped && (closure.missing.length > 0 || closure.error !== null);
|
|
126
|
+
const line = renderDepositFileSetHygieneLine(projectRoot, depositResult);
|
|
127
|
+
if (!flags.json) {
|
|
122
128
|
process.stdout.write(`${renderPrecutoverLine(projectRoot)}\n`);
|
|
123
129
|
process.stdout.write(`${renderXbriefMigrationLine(projectRoot)}\n`);
|
|
124
130
|
process.stdout.write(`${renderStaleHeaderLine(projectRoot)}\n`);
|
|
125
|
-
process.stdout.write(`${
|
|
126
|
-
const closure = evaluateInstalledDepositClosure(projectRoot);
|
|
131
|
+
process.stdout.write(`${line}\n`);
|
|
127
132
|
process.stdout.write(`${renderDeclaredDepositClosureLine(closure)}\n`);
|
|
128
|
-
if (flags.full && !depositResult.skipped && depositResult.absent.length > 0) {
|
|
129
|
-
depositHygieneExit = 1;
|
|
130
|
-
}
|
|
131
|
-
if (flags.full &&
|
|
132
|
-
!closure.skipped &&
|
|
133
|
-
(closure.missing.length > 0 || closure.error !== null)) {
|
|
134
|
-
depositHygieneExit = 1;
|
|
135
|
-
}
|
|
136
133
|
}
|
|
137
|
-
const
|
|
138
|
-
return
|
|
134
|
+
const closureLine = renderDeclaredDepositClosureLine(closure);
|
|
135
|
+
return cmdDoctor(argv, {
|
|
136
|
+
depositHygiene: {
|
|
137
|
+
failed: fileSetFailed || closureFailed,
|
|
138
|
+
absent: depositResult.absent,
|
|
139
|
+
line: fileSetFailed ? line : closureFailed ? closureLine : line,
|
|
140
|
+
},
|
|
141
|
+
});
|
|
139
142
|
}
|
|
140
143
|
finally {
|
|
141
144
|
setDoctorAgentsTemplateRoot(undefined);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const CLI_PACKAGE: "@deftai/directive";
|
|
2
|
+
export interface IdentityBannerParts {
|
|
3
|
+
readonly cliVersion: string;
|
|
4
|
+
readonly engineName: string;
|
|
5
|
+
readonly engineVersion: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Display-both identity line. Engine semver is first so parseVersionFromOutput
|
|
9
|
+
* in active-cli.ts and classify.ts still treat --version as the engine.
|
|
10
|
+
*/
|
|
11
|
+
export declare function formatIdentityBanner(parts: IdentityBannerParts): string;
|
|
12
|
+
export declare function identityBanner(): string;
|
|
13
|
+
//# sourceMappingURL=identity-banner.d.ts.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { engineInfo } from "@deftai/directive-core";
|
|
2
|
+
import { readCliPackageVersion } from "./cli-package-version.js";
|
|
3
|
+
export const CLI_PACKAGE = "@deftai/directive";
|
|
4
|
+
/**
|
|
5
|
+
* Display-both identity line. Engine semver is first so parseVersionFromOutput
|
|
6
|
+
* in active-cli.ts and classify.ts still treat --version as the engine.
|
|
7
|
+
*/
|
|
8
|
+
export function formatIdentityBanner(parts) {
|
|
9
|
+
return `${CLI_PACKAGE} (engine: ${parts.engineName}@${parts.engineVersion}; package: ${CLI_PACKAGE}@${parts.cliVersion})`;
|
|
10
|
+
}
|
|
11
|
+
export function identityBanner() {
|
|
12
|
+
const info = engineInfo();
|
|
13
|
+
return formatIdentityBanner({
|
|
14
|
+
cliVersion: readCliPackageVersion(),
|
|
15
|
+
engineName: info.name,
|
|
16
|
+
engineVersion: info.version,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=identity-banner.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* (cli → core → types), proving the project-reference graph builds and
|
|
6
6
|
* resolves end-to-end. Real commands land in later migration waves.
|
|
7
7
|
*/
|
|
8
|
-
export
|
|
9
|
-
/** Renders
|
|
8
|
+
export { CLI_PACKAGE } from "./identity-banner.js";
|
|
9
|
+
/** Renders CLI package and engine identity. First semver is the engine (#4766). */
|
|
10
10
|
export declare function banner(): string;
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { identityBanner } from "./identity-banner.js";
|
|
2
2
|
/**
|
|
3
3
|
* `@deftai/directive` — entrypoint for the deft directive TypeScript engine.
|
|
4
4
|
*
|
|
@@ -6,10 +6,9 @@ import { engineInfo } from "@deftai/directive-core";
|
|
|
6
6
|
* (cli → core → types), proving the project-reference graph builds and
|
|
7
7
|
* resolves end-to-end. Real commands land in later migration waves.
|
|
8
8
|
*/
|
|
9
|
-
export
|
|
10
|
-
/** Renders
|
|
9
|
+
export { CLI_PACKAGE } from "./identity-banner.js";
|
|
10
|
+
/** Renders CLI package and engine identity. First semver is the engine (#4766). */
|
|
11
11
|
export function banner() {
|
|
12
|
-
|
|
13
|
-
return `${CLI_PACKAGE} (engine: ${info.name}@${info.version})`;
|
|
12
|
+
return identityBanner();
|
|
14
13
|
}
|
|
15
14
|
//# sourceMappingURL=index.js.map
|
package/dist/plan-sequence.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { readFileSync } from "node:fs";
|
|
6
6
|
import { resolve } from "node:path";
|
|
7
7
|
import { fileURLToPath } from "node:url";
|
|
8
|
-
import { advancePlanSequence, clearPlanSequence, collectTerminalLifecycleOrigins, createPlanSequence, detectTerminalEntryDrift, parsePlanSequence, readPlanSequence, writePlanSequence, } from "@deftai/directive-core/plan-sequence";
|
|
8
|
+
import { advancePlanSequence, clearPlanSequence, collectTerminalLifecycleOrigins, createPlanSequence, detectTerminalEntryDrift, inspectMissingSequenceKind, missingSequenceKindPayload, parsePlanSequence, readPlanSequence, writePlanSequence, } from "@deftai/directive-core/plan-sequence";
|
|
9
9
|
export function parseArgs(argv) {
|
|
10
10
|
const parsed = {
|
|
11
11
|
projectRoot: ".",
|
|
@@ -113,6 +113,16 @@ export function main(argv = process.argv.slice(2)) {
|
|
|
113
113
|
return 0;
|
|
114
114
|
}
|
|
115
115
|
if (parsed.action === "current") {
|
|
116
|
+
const missingKind = inspectMissingSequenceKind(root);
|
|
117
|
+
if (missingKind !== null) {
|
|
118
|
+
if (parsed.emitJson) {
|
|
119
|
+
process.stdout.write(`${JSON.stringify(missingSequenceKindPayload(missingKind), null, 2)}\n`);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
process.stderr.write(`${missingKind.message}\n`);
|
|
123
|
+
}
|
|
124
|
+
return 1;
|
|
125
|
+
}
|
|
116
126
|
const seq = readPlanSequence(root);
|
|
117
127
|
if (seq === null) {
|
|
118
128
|
process.stderr.write("No active ordered-plan sequence (.deft/plan-sequence.json missing).\n");
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { resolve } from "node:path";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
|
-
import { collectTerminalLifecycleOrigins, readPlanSequence, verifyPlanTarget, } from "@deftai/directive-core/plan-sequence";
|
|
7
|
+
import { collectTerminalLifecycleOrigins, inspectMissingSequenceKind, missingSequenceKindPayload, readPlanSequence, verifyPlanTarget, } from "@deftai/directive-core/plan-sequence";
|
|
8
8
|
const KINDS = [
|
|
9
9
|
"pr",
|
|
10
10
|
"issue",
|
|
@@ -94,7 +94,18 @@ export function main(argv = process.argv.slice(2)) {
|
|
|
94
94
|
process.stderr.write(`${parsed.error ?? "usage error"}\n`);
|
|
95
95
|
return 2;
|
|
96
96
|
}
|
|
97
|
-
const
|
|
97
|
+
const root = resolve(parsed.projectRoot);
|
|
98
|
+
const missingKind = inspectMissingSequenceKind(root);
|
|
99
|
+
if (missingKind !== null) {
|
|
100
|
+
if (parsed.emitJson) {
|
|
101
|
+
process.stdout.write(`${JSON.stringify(missingSequenceKindPayload(missingKind), null, 2)}\n`);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
process.stderr.write(`${missingKind.message}\n`);
|
|
105
|
+
}
|
|
106
|
+
return 1;
|
|
107
|
+
}
|
|
108
|
+
const seq = readPlanSequence(root);
|
|
98
109
|
// No sequence: allow (caller may have explicit operator approval); warn on stderr.
|
|
99
110
|
if (seq === null) {
|
|
100
111
|
if (parsed.emitJson) {
|
|
@@ -108,7 +119,7 @@ export function main(argv = process.argv.slice(2)) {
|
|
|
108
119
|
const result = verifyPlanTarget(seq, {
|
|
109
120
|
targetKind: parsed.targetKind,
|
|
110
121
|
target: parsed.target,
|
|
111
|
-
terminalOrigins: collectTerminalLifecycleOrigins(
|
|
122
|
+
terminalOrigins: collectTerminalLifecycleOrigins(root),
|
|
112
123
|
});
|
|
113
124
|
if (parsed.emitJson) {
|
|
114
125
|
process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deftai/directive",
|
|
3
|
-
"version": "0.119.
|
|
3
|
+
"version": "0.119.8",
|
|
4
4
|
"description": "Directive CLI — npm install path for the Deft Directive framework.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://deftai.github.io/directive/",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"provenance": true
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@deftai/directive-core": "^0.119.
|
|
38
|
-
"@deftai/directive-content": "^0.119.
|
|
37
|
+
"@deftai/directive-core": "^0.119.8",
|
|
38
|
+
"@deftai/directive-content": "^0.119.8"
|
|
39
39
|
},
|
|
40
40
|
"scripts": {
|
|
41
41
|
"build": "tsc -b"
|