@sublang/slc 0.15.1 → 0.16.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.
Files changed (44) hide show
  1. package/README.md +66 -5
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +35 -1
  4. package/dist/app.js.map +1 -1
  5. package/dist/artifacts.d.ts +2 -0
  6. package/dist/artifacts.d.ts.map +1 -1
  7. package/dist/artifacts.js.map +1 -1
  8. package/dist/config-file.d.ts +2 -0
  9. package/dist/config-file.d.ts.map +1 -1
  10. package/dist/config-file.js +2 -0
  11. package/dist/config-file.js.map +1 -1
  12. package/dist/emitted-imports.d.ts +19 -0
  13. package/dist/emitted-imports.d.ts.map +1 -1
  14. package/dist/emitted-imports.js +64 -1
  15. package/dist/emitted-imports.js.map +1 -1
  16. package/dist/entry-module.d.ts +6 -1
  17. package/dist/entry-module.d.ts.map +1 -1
  18. package/dist/entry-module.js +51 -26
  19. package/dist/entry-module.js.map +1 -1
  20. package/dist/invocation.d.ts +6 -0
  21. package/dist/invocation.d.ts.map +1 -1
  22. package/dist/invocation.js +20 -0
  23. package/dist/invocation.js.map +1 -1
  24. package/dist/runner.d.ts.map +1 -1
  25. package/dist/runner.js +273 -7
  26. package/dist/runner.js.map +1 -1
  27. package/dist/slc.config.template.yaml +1 -1
  28. package/dist/verify-coverage.d.ts +1 -0
  29. package/dist/verify-coverage.d.ts.map +1 -1
  30. package/dist/verify-coverage.js +91 -13
  31. package/dist/verify-coverage.js.map +1 -1
  32. package/dist/verify-source.d.ts +11 -4
  33. package/dist/verify-source.d.ts.map +1 -1
  34. package/dist/verify-source.js +114 -10
  35. package/dist/verify-source.js.map +1 -1
  36. package/dist/verify-support.d.ts +2 -1
  37. package/dist/verify-support.d.ts.map +1 -1
  38. package/dist/verify-support.js +4 -3
  39. package/dist/verify-support.js.map +1 -1
  40. package/dist/verify.d.ts +4 -1
  41. package/dist/verify.d.ts.map +1 -1
  42. package/dist/verify.js +18 -9
  43. package/dist/verify.js.map +1 -1
  44. package/package.json +1 -1
@@ -9,19 +9,19 @@
9
9
  * default-exporting a Playbook registry entry derived entirely from the
10
10
  * compiled bundle — `id`/`command` from the basename, `requiredRoleIds` from
11
11
  * the gears `Roles:`/`Players:` declaration, `intent` from the normalized
12
- * source's title and lead line, the linked artifact's public pure option
13
- * validator (or the retained legacy allowlist), and `createRuntime` wiring the
14
- * linked default factory. A current `Roles:` source declares the canonical
15
- * lowercase local role ids its compiled machine's delegated states name, so
16
- * the host binds exactly those ids and the session's `callPlayer` port needs
17
- * no translation (DR-024); a historical `Players:` source keeps its verbatim
18
- * declared names behind the DR-017 role-binding boundary, which maps the
19
- * linked runtime's lowercased player ids back to them. Its generation's host
20
- * consumes the module unchanged (self-hosting-14). See
12
+ * source's title and first prose paragraph, the linked artifact's public pure
13
+ * option validator (or the retained legacy allowlist), and `createRuntime`
14
+ * wiring the linked default factory. A current `Roles:` source declares the
15
+ * canonical lowercase local role ids its compiled machine's delegated states
16
+ * name, so the host binds exactly those ids and the session's `callPlayer`
17
+ * port needs no translation (DR-024); a historical `Players:` source keeps
18
+ * its verbatim declared names behind the DR-017 role-binding boundary, which
19
+ * maps the linked runtime's lowercased player ids back to them. Its
20
+ * generation's host consumes the module unchanged (self-hosting-14). See
21
21
  * specs/packages/self-hosting.md.
22
22
  */
23
23
  import { readFile, writeFile } from 'node:fs/promises';
24
- import { join } from 'node:path';
24
+ import { join, relative, sep } from 'node:path';
25
25
  import { inspectGearsRoleContract, parseGearsItems } from './verify.js';
26
26
  import { linkedOptionsValidator } from './entry-options.js';
27
27
  /** Emits the entry module and returns its path. */
@@ -49,31 +49,55 @@ export async function emitEntryModule(opts) {
49
49
  byRoleId.set(roleId, name);
50
50
  });
51
51
  const hasScript = parseGearsItems(gears).some((item) => item.actor === 'script');
52
+ const bundle = opts.artifactDir ?? join(opts.cwd, `${opts.basename}.${opts.pipeline}`);
52
53
  const delegatedOptions = schema3 &&
53
54
  (await linkedOptionsValidator({
54
- linkedPath: join(opts.cwd, `${opts.basename}.${opts.pipeline}`, `${opts.basename}.playbook.ts`),
55
- fsmPath: join(opts.cwd, `${opts.basename}.${opts.pipeline}`, `${opts.basename}.fsm.ts`),
55
+ linkedPath: join(bundle, `${opts.basename}.playbook.ts`),
56
+ fsmPath: join(bundle, `${opts.basename}.fsm.ts`),
56
57
  })) !== undefined;
57
58
  const intent = deriveIntent(text) ?? opts.basename;
58
59
  const path = join(opts.cwd, `${opts.basename}.ts`);
59
- await writeFile(path, renderEntryModule({
60
+ await (opts.write ?? writeFile)(path, renderEntryModule({
60
61
  basename: opts.basename,
61
- bundleLeaf: `${opts.basename}.${opts.pipeline}`,
62
+ bundleLeaf: relative(opts.cwd, bundle).split(sep).join('/') || '.',
62
63
  roleIds: schema3 ? roleContract.roleIds : roleContract.names,
63
64
  hasScript,
64
65
  delegatedOptions,
65
66
  intent,
66
67
  schema3,
67
68
  concurrentRoleSets: schema3 ? roleContract.concurrentRoleSets : [],
68
- }), 'utf8');
69
+ }));
69
70
  return path;
70
71
  }
71
- /** Title and lead line of the normalized source, joined as the intent. */
72
+ /**
73
+ * An ATX heading on a trimmed line (CommonMark 4.2): one to six `#` followed by
74
+ * whitespace or the line's end, so a `#123` issue reference is prose.
75
+ */
76
+ const ATX_HEADING = /^#{1,6}(?:\s|$)/;
77
+ /**
78
+ * Besides an ATX heading, a line that ends a hard-wrapped prose paragraph: a
79
+ * comment, a new list item (a marker followed by whitespace, so a wrapped `-1`
80
+ * or `-based` continues the sentence), or a role-declaration label.
81
+ */
82
+ const PARAGRAPH_BREAK = /^(?:<!--|(?:[-*+]|\d+[.)])\s|(?:Roles|Players):\s*$)/;
83
+ /**
84
+ * Title and first prose paragraph of the normalized source, joined as the
85
+ * intent. The compiler's normalized text hard-wraps paragraphs, so the lead's
86
+ * continuation lines are joined with single spaces until the paragraph ends.
87
+ */
72
88
  function deriveIntent(text) {
73
89
  let title;
74
- let lead;
90
+ const lead = [];
75
91
  for (const line of text.split('\n')) {
76
92
  const trimmed = line.trim();
93
+ if (lead.length > 0) {
94
+ if (trimmed === '' ||
95
+ ATX_HEADING.test(trimmed) ||
96
+ PARAGRAPH_BREAK.test(trimmed))
97
+ break;
98
+ lead.push(trimmed);
99
+ continue;
100
+ }
77
101
  if (trimmed === '' || trimmed.startsWith('<!--'))
78
102
  continue;
79
103
  if (title === undefined) {
@@ -83,17 +107,18 @@ function deriveIntent(text) {
83
107
  continue;
84
108
  }
85
109
  }
86
- if (trimmed.startsWith('#') ||
87
- trimmed.startsWith('-') ||
88
- /^Players:\s*$/.test(trimmed)) {
110
+ if (ATX_HEADING.test(trimmed) ||
111
+ // A bullet's `-` is followed by whitespace, so a leading `-1` is prose.
112
+ /^-(?:\s|$)/.test(trimmed) ||
113
+ /^(?:Roles|Players):\s*$/.test(trimmed)) {
89
114
  continue;
90
115
  }
91
- lead = trimmed;
92
- break;
116
+ lead.push(trimmed);
93
117
  }
94
- if (title !== undefined && lead !== undefined)
95
- return `${title} — ${lead}`;
96
- return title ?? lead;
118
+ const paragraph = lead.length > 0 ? lead.join(' ') : undefined;
119
+ if (title !== undefined && paragraph !== undefined)
120
+ return `${title} — ${paragraph}`;
121
+ return title ?? paragraph;
97
122
  }
98
123
  function renderEntryModule(spec) {
99
124
  const allowed = spec.hasScript ? `['cwd']` : `[]`;
@@ -195,7 +220,7 @@ function withRoleBinding<T extends object>(runtime: T): T {
195
220
  // playbook to \`playbook run\`. Derived deterministically from the compiled
196
221
  ${roleNote}
197
222
 
198
- import createPlaybookRuntime${spec.delegatedOptions ? ', { validateOptions as linkedValidateOptions }' : ''} from './${spec.bundleLeaf}/${spec.basename}.playbook.ts';
223
+ import createPlaybookRuntime${spec.delegatedOptions ? ', { validateOptions as linkedValidateOptions }' : ''} from './${spec.bundleLeaf === '.' ? '' : `${spec.bundleLeaf}/`}${spec.basename}.playbook.ts';
199
224
 
200
225
  type FactoryInput = NonNullable<Parameters<typeof createPlaybookRuntime>[0]>;
201
226
  ${runtimeOptionsAlias}
@@ -1 +1 @@
1
- {"version":3,"file":"entry-module.js","sourceRoot":"","sources":["../src/entry-module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entry-module.js","sourceRoot":"","sources":["../src/entry-module.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,12 @@ export interface LinkOption {
14
14
  }
15
15
  /** A parsed `slc` invocation, routed to one of the four run forms. */
16
16
  export type Invocation = {
17
+ kind: 'complete';
18
+ pipeline: 'playbook';
19
+ source: string;
20
+ /** Declares the retained bundle's target; completion never links. */
21
+ linkTarget: string | null;
22
+ } | {
17
23
  kind: 'full';
18
24
  pipeline: string;
19
25
  source: string;
@@ -1 +1 @@
1
- {"version":3,"file":"invocation.d.ts","sourceRoot":"","sources":["../src/invocation.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,sEAAsE;AACtE,MAAM,MAAM,UAAU,GAClB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB,CAAC;AAEN,yDAAyD;AACzD,MAAM,MAAM,YAAY,GACpB,aAAa,GACb,UAAU,GACV,iBAAiB,GACjB,wBAAwB,GACxB,iBAAiB,GACjB,cAAc,GACd,qBAAqB,GACrB,gBAAgB,GAChB,kBAAkB,CAAC;AAEvB,8EAA8E;AAC9E,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAE5B,YAAY,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAI9C;CACF;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CA2InE"}
1
+ {"version":3,"file":"invocation.d.ts","sourceRoot":"","sources":["../src/invocation.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,sEAAsE;AACtE,MAAM,MAAM,UAAU,GAClB;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,UAAU,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB,CAAC;AAEN,yDAAyD;AACzD,MAAM,MAAM,YAAY,GACpB,aAAa,GACb,UAAU,GACV,iBAAiB,GACjB,wBAAwB,GACxB,iBAAiB,GACjB,cAAc,GACd,qBAAqB,GACrB,gBAAgB,GAChB,kBAAkB,CAAC;AAEvB,8EAA8E;AAC9E,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAE5B,YAAY,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAI9C;CACF;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAoKnE"}
@@ -25,6 +25,7 @@ export function parseInvocation(argv) {
25
25
  let noOptimize = false;
26
26
  let normalize = false;
27
27
  let rebuild = false;
28
+ let complete = false;
28
29
  const options = [];
29
30
  for (let i = 0; i < argv.length; i++) {
30
31
  const arg = argv[i];
@@ -55,6 +56,11 @@ export function parseInvocation(argv) {
55
56
  throw new CliError('duplicate-option', 'repeated --rebuild');
56
57
  rebuild = true;
57
58
  }
59
+ else if (arg === '--complete') {
60
+ if (complete)
61
+ throw new CliError('duplicate-option', 'repeated --complete');
62
+ complete = true;
63
+ }
58
64
  else if (arg.startsWith('-') && arg !== '-') {
59
65
  throw new CliError('unknown-option', `unknown option "${arg}"`);
60
66
  }
@@ -73,6 +79,20 @@ export function parseInvocation(argv) {
73
79
  throw new CliError('no-pipeline', `invalid pipeline reference "${head}"`);
74
80
  }
75
81
  const rest = positionals.slice(1);
82
+ if (complete) {
83
+ if (pipeline !== 'playbook' ||
84
+ phase !== null ||
85
+ output !== null ||
86
+ optimize ||
87
+ noOptimize ||
88
+ normalize ||
89
+ rebuild ||
90
+ options.length > 0) {
91
+ throw new CliError('unexpected-flag', '--complete requires the full-form playbook invocation with only a Source and optional --link target');
92
+ }
93
+ requireSingleSource(rest);
94
+ return { kind: 'complete', pipeline, source: rest[0], linkTarget: link };
95
+ }
76
96
  if (optimize && noOptimize) {
77
97
  throw new CliError('duplicate-option', '-O/--optimize conflicts with --no-optimize');
78
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"invocation.js","sourceRoot":"","sources":["../src/invocation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invocation.js","sourceRoot":"","sources":["../src/invocation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAkBA,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAC;AAgB5B,OAAO,EAKL,KAAK,aAAa,EAMnB,MAAM,gBAAgB,CAAC;AAgBxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,WAAW,CAAC;AAEnB,OAAO,EAEL,KAAK,gBAAgB,EAGtB,MAAM,eAAe,CAAC;AA0CvB,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,4CAA4C;AAC5C,MAAM,WAAW,OAAO;IACtB,uEAAuE;IACvE,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,uFAAuF;IACvF,QAAQ,EAAE,aAAa,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CACT,SAAS,EAAE,iBAAiB,KACzB,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5C,uGAAuG;IACvG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,mCAAmC;AACnC,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,wCAAwC;IACxC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sEAAsE;IACtE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,uEAAuE;IACvE,OAAO,CAAC,EAAE,YAAY,GAAG,wBAAwB,CAAC;IAClD,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAsB,MAAM,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC,CAyDpB;AAsoBD,6EAA6E;AAC7E,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAuBA,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAC;AAiB5B,OAAO,EAKL,KAAK,aAAa,EAMnB,MAAM,gBAAgB,CAAC;AAgBxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,WAAW,CAAC;AAEnB,OAAO,EAEL,KAAK,gBAAgB,EAGtB,MAAM,eAAe,CAAC;AA8CvB,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,4CAA4C;AAC5C,MAAM,WAAW,OAAO;IACtB,uEAAuE;IACvE,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,uFAAuF;IACvF,QAAQ,EAAE,aAAa,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CACT,SAAS,EAAE,iBAAiB,KACzB,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5C,uGAAuG;IACvG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,mCAAmC;AACnC,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,wCAAwC;IACxC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sEAAsE;IACtE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,uEAAuE;IACvE,OAAO,CAAC,EAAE,YAAY,GAAG,wBAAwB,CAAC;IAClD,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAsB,MAAM,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC,CA2DpB;AA64BD,6EAA6E;AAC7E,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD"}
package/dist/runner.js CHANGED
@@ -9,14 +9,14 @@
9
9
  * injected so a host wires the real pipeline resolution and Cligent agent while
10
10
  * tests supply fakes. See specs/packages/pipeline.md and specs/packages/phase-execution.md.
11
11
  */
12
- import { mkdir, readFile, stat } from 'node:fs/promises';
12
+ import { mkdir, readFile, stat, writeFile } from 'node:fs/promises';
13
13
  import { dirname, join, relative, resolve, sep } from 'node:path';
14
14
  import { fileURLToPath } from 'node:url';
15
- import { artifactDir, planArtifacts, parseSource } from './artifacts.js';
15
+ import { artifactDir, planArtifacts, parseSource, } from './artifacts.js';
16
16
  import { formatClarificationReport, } from './clarification.js';
17
17
  import { encodeLocator, invalidateBuildHistory, loadBuildHistory, recordBuild, verifiedInput, } from './build-history.js';
18
18
  import { emitEntryModule } from './entry-module.js';
19
- import { reconcileLinkObjectImportSpecifiers, unresolvableRelativeImports, } from './emitted-imports.js';
19
+ import { linkObjectEdges, reconcileLinkObjectImportSpecifiers, unresolvableRelativeImports, } from './emitted-imports.js';
20
20
  import { messageOf } from './errors.js';
21
21
  import { assertSafeTarget, formatFailureReport, phaseProtectedPaths, pathsAlias, runPhase, watchProtectedPaths, } from './execution.js';
22
22
  import { compareUtf8, hashBytes, isHash } from './hash.js';
@@ -33,9 +33,9 @@ import { RESERVED_SLC_PIPELINE, defaultPlaybookLinkTarget, isReservedPipeline, }
33
33
  import { readPlaybookRuntimeDeclaration, } from './runtime-contract.js';
34
34
  import { artifactSchemaForPlaybookProvenance, checkFsmContinuationInputs, checkFsmChildSuspension, checkFsmCoverage, checkGearsActorContract, checkGearsFsmConformance, checkGearsResultContract, checkLinkedModuleContract, emitFsmCoverageTest, FsmCoverageDeadlineError, emitFsmIntrospectionTest, emitGearsFsmConformanceTest, emitPromptContractTest, findConcurrentRoleSets, inspectGearsRoleContract, findMachineConfig, loadFsmModule, loadLinkedModuleForVerification, playbookProvenanceForLinkTarget, resolveArtifactSchemaForVerification, } from './verify.js';
35
35
  import { VERIFIER_SUPPORT_MODULE, emitVerifierSupport, verifierSupportFiles, } from './verify-support.js';
36
- import { checkSourceGearsContract } from './verify-source.js';
36
+ import { checkSourceGearsContract, checkSourceRoles } from './verify-source.js';
37
37
  import { checkFsmTypeScript } from './verify-typescript.js';
38
- import { checkEntryOptions, ENTRY_OPTIONS_CONTRACT } from './entry-options.js';
38
+ import { checkEntryOptions, ENTRY_OPTIONS_CONTRACT, linkedOptionsValidator, } from './entry-options.js';
39
39
  /**
40
40
  * Parses argv and runs the requested pipeline, phase, or link end-to-end.
41
41
  * Never rejects: malformed invocations, refusals, and phase failures all return
@@ -69,6 +69,8 @@ export async function runSlc(argv, deps) {
69
69
  };
70
70
  try {
71
71
  switch (invocation.kind) {
72
+ case 'complete':
73
+ return finish(await runCompletion(invocation, deps));
72
74
  case 'full':
73
75
  // The reserved playbook pipeline supplies a default link target
74
76
  // (self-hosting-13): a bare full run becomes a full-link against the
@@ -337,6 +339,227 @@ async function runFullLink(invocation, deps) {
337
339
  function runCwd(deps) {
338
340
  return resolve(deps.cwd ?? process.cwd());
339
341
  }
342
+ /** Checks an explicitly selected current bundle, without executing phases/history. */
343
+ async function runCompletion(invocation, deps) {
344
+ const cwd = runCwd(deps);
345
+ const pipeline = await loadPipeline(await resolvePipeline(invocation.pipeline, deps.resolver));
346
+ const link = await requireLink(pipeline, invocation.pipeline);
347
+ const entry = pipeline.phases[0];
348
+ const source = resolve(cwd, invocation.source);
349
+ const { basename, raw } = parseSource({
350
+ path: source,
351
+ sourceFormat: entry.source.format,
352
+ ext: entry.source.ext,
353
+ entry: true,
354
+ });
355
+ if (raw)
356
+ return failure('completion requires an entry-form Source; explicitly normalize or compile raw input first');
357
+ const artDir = artifactDir(cwd, basename, invocation.pipeline);
358
+ const plan = planArtifacts({ phases: pipeline.phases, basename, artDir });
359
+ const gears = plan.find((artifact) => artifact.phase.target.format === 'gears');
360
+ const fsm = plan.find((artifact) => artifact.phase.target.format === 'fsm');
361
+ if (entry.source.format !== 'text' ||
362
+ entry.source.ext !== '.md' ||
363
+ gears?.phase.target.ext !== '.md' ||
364
+ fsm?.phase.target.ext !== '.ts' ||
365
+ link.source.format !== 'fsm' ||
366
+ link.source.ext !== '.ts' ||
367
+ link.target.format !== 'playbook' ||
368
+ link.target.ext !== '.ts')
369
+ return failure('completion requires the text/GEARS/TypeScript-FSM/Playbook canonical pipeline formats');
370
+ const linked = join(artDir, `${basename}.playbook.ts`);
371
+ const entryPath = join(cwd, `${basename}.ts`);
372
+ const linkTarget = invocation.linkTarget === null
373
+ ? defaultPlaybookLinkTarget()
374
+ : resolve(cwd, invocation.linkTarget);
375
+ const selected = [source, gears.path, fsm.path, linked, linkTarget];
376
+ for (const path of selected) {
377
+ try {
378
+ if (!(await stat(path)).isFile())
379
+ throw new Error('not a regular file');
380
+ await readFile(path);
381
+ }
382
+ catch (error) {
383
+ return failure(`completion requires readable file ${path}: ${messageOf(error)}`);
384
+ }
385
+ }
386
+ const pinInputs = new Set([
387
+ join(pipeline.dir, PINS_FILE),
388
+ join(pipeline.dir, PIN_INPUTS_FILE),
389
+ ]);
390
+ const pinFile = (await loadPinFile(pipeline.dir)).file;
391
+ if (pinFile !== undefined) {
392
+ await evaluatePinFile(pipeline.dir, pinFile, {
393
+ observePath: (path) => pinInputs.add(resolve(path)),
394
+ });
395
+ }
396
+ const definitions = chainDefinitions(pipeline);
397
+ const declared = await declaredInputPaths(pipeline, pinFile, [...pipeline.phases, ...pipeline.passes]
398
+ .map((phase) => ({
399
+ path: phaseDefinition(pipeline, phase.name),
400
+ phase: phase.name,
401
+ }))
402
+ .concat([{ path: pipeline.linkFile, phase: 'link' }]));
403
+ const verification = {
404
+ pipeline: invocation.pipeline,
405
+ plan,
406
+ artDir,
407
+ basename,
408
+ linkTarget,
409
+ };
410
+ const targets = [
411
+ ...verificationHostTargets(verification),
412
+ { path: entryPath },
413
+ ];
414
+ const protectedInputs = [
415
+ ...new Set([
416
+ ...selected,
417
+ ...definitions,
418
+ ...declared.paths,
419
+ ...pinInputs,
420
+ join(artDir, '.slc'),
421
+ ...targets.flatMap((target) => target.protectedInputs ?? []),
422
+ ]),
423
+ ];
424
+ // Reuse ordinary definition/pin validation and physical output guards. There
425
+ // are deliberately no steps and no incremental context to execute or publish.
426
+ return executeSteps([], pipeline, deps, {
427
+ hostTargets: targets.map((target) => ({
428
+ ...target,
429
+ required: true,
430
+ protectedInputs,
431
+ })),
432
+ complete: async (_result, guardTarget) => {
433
+ const unchanged = await watchProtectedPaths(protectedInputs);
434
+ const pending = new Map();
435
+ const prepare = async (path, content) => {
436
+ if (pending.has(path))
437
+ throw new Error(`duplicate completion output: ${path}`);
438
+ pending.set(path, content);
439
+ };
440
+ let findings;
441
+ let prepared;
442
+ try {
443
+ deps.signal?.throwIfAborted();
444
+ // The emitted entry must load the very FSM bytes checked below: refuse
445
+ // a JavaScript edge, and require a value import of the TypeScript FSM.
446
+ const edges = await linkObjectEdges(linked, fsm.path);
447
+ findings = edges.javascript.map((specifier) => `completion cannot verify JavaScript FSM import ${specifier} against checked ${fsm.path}; review and correct the retained linked import to select the TypeScript FSM, then rerun --complete`);
448
+ if (findings.length === 0 && edges.typescript.length === 0)
449
+ findings = [
450
+ `completion found no value import of the checked ${fsm.path} in linked module ${linked}; review and correct the retained linked import to select the TypeScript FSM, then rerun --complete`,
451
+ ];
452
+ if (findings.length === 0)
453
+ findings = [
454
+ ...(await sourceFidelityFindings(source, gears.path)),
455
+ ...(await gearsContractFindings(gears.path)),
456
+ ...inspectGearsRoleContract(await readFile(gears.path, 'utf8'))
457
+ .findings,
458
+ ...(await checkFsmTypeScript(fsm.path, deps.signal)),
459
+ ];
460
+ if (findings.length === 0)
461
+ findings = await fsmConformanceFindings(gears.path, fsm.path, linkTarget, deps.signal);
462
+ if (findings.length === 0) {
463
+ const config = findMachineConfig(await loadFsmModule(fsm.path));
464
+ findings = [
465
+ ...checkFsmChildSuspension(config),
466
+ ...(await linkFidelityFindings(linked, fsm.path)),
467
+ ];
468
+ }
469
+ if (findings.length === 0) {
470
+ const module = (await loadLinkedModuleForVerification({
471
+ linkedPath: linked,
472
+ fsmPath: fsm.path,
473
+ }));
474
+ if (typeof module.default !== 'function')
475
+ findings = [
476
+ 'linked module has no callable default runtime factory',
477
+ ];
478
+ else if (inspectGearsRoleContract(await readFile(gears.path, 'utf8'))
479
+ .generation === 'schema-3' &&
480
+ (await linkedOptionsValidator({
481
+ linkedPath: linked,
482
+ fsmPath: fsm.path,
483
+ })) !== undefined) {
484
+ findings = await checkEntryOptions({
485
+ linkedPath: linked,
486
+ fsmPath: fsm.path,
487
+ signal: deps.signal,
488
+ });
489
+ }
490
+ }
491
+ if (findings.length === 0) {
492
+ const missing = await unresolvableRelativeImports(linked);
493
+ if (missing.length > 0)
494
+ findings = [
495
+ `linked module has unresolvable relative imports: ${missing.join(', ')}`,
496
+ ];
497
+ }
498
+ if (findings.length === 0) {
499
+ prepared = await emitVerification({ ok: true, outputs: [], diagnostics: [] }, verification, guardTarget, prepare);
500
+ await emitEntryModule({
501
+ cwd,
502
+ basename,
503
+ pipeline: invocation.pipeline,
504
+ gearsPath: gears.path,
505
+ textPath: source,
506
+ artifactDir: artDir,
507
+ write: prepare,
508
+ });
509
+ const missing = targets.filter((target) => !pending.has(target.path));
510
+ findings = [
511
+ ...prepared.diagnostics,
512
+ ...missing.map((target) => `required completion output was not prepared: ${target.path}`),
513
+ ];
514
+ }
515
+ }
516
+ catch (error) {
517
+ findings = [`completion checks could not finish: ${messageOf(error)}`];
518
+ }
519
+ const changes = await unchanged();
520
+ if (changes.length > 0)
521
+ findings = changes;
522
+ if (findings.length > 0)
523
+ return failure(formatFailureReport({
524
+ phase: 'complete',
525
+ target: entryPath,
526
+ reasons: [...findings],
527
+ }));
528
+ if (prepared === undefined)
529
+ throw new Error('completion preparation missing');
530
+ for (const target of targets)
531
+ await guardTarget(target.path);
532
+ deps.signal?.throwIfAborted();
533
+ const outputs = [];
534
+ try {
535
+ for (const path of [...prepared.outputs, entryPath]) {
536
+ deps.signal?.throwIfAborted();
537
+ await guardTarget(path);
538
+ await mkdir(dirname(path), { recursive: true });
539
+ await writeFile(path, pending.get(path));
540
+ outputs.push(path);
541
+ }
542
+ }
543
+ catch (error) {
544
+ return {
545
+ ok: false,
546
+ outputs,
547
+ diagnostics: [
548
+ `completion output write failed: ${messageOf(error)}`,
549
+ ...outputs.map((path) => `completion already wrote ${path}`),
550
+ ],
551
+ };
552
+ }
553
+ return {
554
+ ok: true,
555
+ outputs,
556
+ diagnostics: [
557
+ 'checked retained current bundle; no phases executed or build history published',
558
+ ],
559
+ };
560
+ },
561
+ });
562
+ }
340
563
  /**
341
564
  * After a reserved-pipeline full run produces a `gears` intermediate and an `fsm`
342
565
  * object at their canonical `<basename>.playbook/` locations, emits the
@@ -351,7 +574,7 @@ function runCwd(deps) {
351
574
  * to a diagnostic when the artifact cannot be loaded, leaving the run outcome
352
575
  * unchanged — the conformance test still fails at test time on a broken module.
353
576
  */
354
- async function emitVerification(result, ctx, guardTarget) {
577
+ async function emitVerification(result, ctx, guardTarget, write) {
355
578
  if (!result.ok)
356
579
  return result;
357
580
  const hostTargets = verificationHostTargets(ctx);
@@ -383,7 +606,7 @@ async function emitVerification(result, ctx, guardTarget) {
383
606
  await guardTarget(target.target);
384
607
  }
385
608
  }
386
- outputs.push(...(await emitVerifierSupport(ctx.artDir)));
609
+ outputs.push(...(await emitVerifierSupport(ctx.artDir, write)));
387
610
  if (guardTarget !== undefined) {
388
611
  await guardTarget(join(ctx.artDir, `${ctx.basename}.gears-fsm.test.ts`));
389
612
  }
@@ -393,6 +616,7 @@ async function emitVerification(result, ctx, guardTarget) {
393
616
  verifyModule: VERIFIER_SUPPORT_MODULE,
394
617
  ...(artifactSchema === undefined ? {} : { artifactSchema }),
395
618
  schemaFindings: schemaResolution.findings,
619
+ write,
396
620
  }));
397
621
  try {
398
622
  if (guardTarget !== undefined) {
@@ -402,6 +626,7 @@ async function emitVerification(result, ctx, guardTarget) {
402
626
  artifactDir: ctx.artDir,
403
627
  basename: ctx.basename,
404
628
  verifyModule: VERIFIER_SUPPORT_MODULE,
629
+ write,
405
630
  }));
406
631
  }
407
632
  catch (error) {
@@ -417,6 +642,7 @@ async function emitVerification(result, ctx, guardTarget) {
417
642
  verifyModule: VERIFIER_SUPPORT_MODULE,
418
643
  ...(artifactSchema === undefined ? {} : { artifactSchema }),
419
644
  ...evidence,
645
+ write,
420
646
  });
421
647
  outputs.push(promptContract.path);
422
648
  diagnostics.push(...promptContract.diagnostics.map((diagnostic) => `verification: ${diagnostic}`));
@@ -432,6 +658,7 @@ async function emitVerification(result, ctx, guardTarget) {
432
658
  artifactDir: ctx.artDir,
433
659
  basename: ctx.basename,
434
660
  verifyModule: VERIFIER_SUPPORT_MODULE,
661
+ write,
435
662
  });
436
663
  outputs.push(coverage.path);
437
664
  diagnostics.push(...coverage.diagnostics.map((diagnostic) => `verification: ${diagnostic}`));
@@ -533,6 +760,14 @@ function buildCompileSteps(opts) {
533
760
  const gearsContract = entry.source.format === 'gears'
534
761
  ? () => gearsContractFindings(normalized)
535
762
  : undefined;
763
+ // The raw input is the first text that may declare the entry phase's
764
+ // roles, so a malformed one stops the run before normalization (DR-056).
765
+ const rawSource = previous;
766
+ const sourceRoles = opts.sourceFidelity &&
767
+ entry.source.format === 'text' &&
768
+ entry.target.format === 'gears'
769
+ ? () => sourceRoleFindings(rawSource)
770
+ : undefined;
536
771
  steps.push({
537
772
  request: {
538
773
  kind: 'compile',
@@ -549,6 +784,7 @@ function buildCompileSteps(opts) {
549
784
  ...(gearsContract === undefined
550
785
  ? {}
551
786
  : { compileFidelity: gearsContract }),
787
+ ...(sourceRoles === undefined ? {} : { sourceRoles }),
552
788
  });
553
789
  previous = normalized;
554
790
  }
@@ -619,6 +855,7 @@ function compileStep(pipeline, phase, source, target, sourceFidelity, linkTarget
619
855
  ...(phase.source.format === 'gears'
620
856
  ? { gearsSourceContract: () => gearsContractFindings(source) }
621
857
  : {}),
858
+ ...(gated ? { sourceRoles: () => sourceRoleFindings(source) } : {}),
622
859
  ...(phase.source.format === 'fsm' && phase.source.ext === '.ts'
623
860
  ? { fsmSourceTypecheck: () => checkFsmTypeScript(source, signal) }
624
861
  : {}),
@@ -644,6 +881,21 @@ async function gearsContractFindings(path) {
644
881
  return [`GEARS contract could not be checked: ${messageOf(error)}`];
645
882
  }
646
883
  }
884
+ /**
885
+ * The DR-056 boundary over the Source a text-to-GEARS phase, or the
886
+ * normalization ahead of it, reads (phase-execution-69, verification-54). An
887
+ * unreadable Source is left to the step that reads it.
888
+ */
889
+ async function sourceRoleFindings(source) {
890
+ let sourceText;
891
+ try {
892
+ sourceText = await readFile(source, 'utf8');
893
+ }
894
+ catch {
895
+ return [];
896
+ }
897
+ return checkSourceRoles(sourceText);
898
+ }
647
899
  /**
648
900
  * The DR-029 gate over one text-to-GEARS phase's live target: the deterministic
649
901
  * conservation findings against the Source that phase reads (phase-execution-51,
@@ -1003,6 +1255,20 @@ async function executeSteps(steps, pipeline, deps, opts = {}) {
1003
1255
  if (outputContract !== undefined)
1004
1256
  request = { ...request, outputContract };
1005
1257
  }
1258
+ // A malformed Source role is the author's to fix: refuse it before any
1259
+ // execution strategy or agent runs (DR-056, phase-execution-69).
1260
+ if (step.sourceRoles !== undefined && step.request.kind === 'compile') {
1261
+ const findings = await step.sourceRoles();
1262
+ if (findings.length > 0) {
1263
+ fail();
1264
+ diagnostics.push(formatFailureReport({
1265
+ phase: step.phase,
1266
+ target,
1267
+ reasons: [`invalid Source: ${step.request.source}`, ...findings],
1268
+ }));
1269
+ return stopped(index);
1270
+ }
1271
+ }
1006
1272
  // The consumer cannot repair its protected source. Reject these existing
1007
1273
  // parser findings before selecting or constructing any execution strategy.
1008
1274
  if (step.gearsSourceContract !== undefined) {