@manehorizons/cadence-core 1.8.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/resume.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4B5D"}
1
+ {"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/resume.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyC5D"}
@@ -4,9 +4,17 @@ export function registerResumeCommand(program) {
4
4
  .command('resume')
5
5
  .description('Replay the freshest .cadence/handoff/ SESSION doc + live context (read-only)')
6
6
  .option('--json', 'emit machine-readable JSON instead of rendered text')
7
+ .option('--full', 'force full output (whole doc + live context replay)')
8
+ .option('--brief', 'force brief output (key sections only, no context replay)')
7
9
  .action(async (opts) => {
10
+ if (opts.full && opts.brief) {
11
+ process.stderr.write('resume: --full and --brief are mutually exclusive\n');
12
+ process.exitCode = 1;
13
+ return;
14
+ }
8
15
  try {
9
- const res = await runResume(process.cwd());
16
+ const mode = opts.full ? 'full' : opts.brief ? 'brief' : undefined;
17
+ const res = await runResume(process.cwd(), mode ? { mode } : {});
10
18
  if (opts.json) {
11
19
  process.stdout.write(JSON.stringify(res) + '\n');
12
20
  return;
@@ -20,6 +28,9 @@ export function registerResumeCommand(program) {
20
28
  }
21
29
  process.stdout.write(`--- narrative from ${res.handoffPath} ---\n\n`);
22
30
  process.stdout.write(res.doc.endsWith('\n') ? res.doc : res.doc + '\n');
31
+ if (res.mode === 'brief') {
32
+ process.stdout.write('\nbrief mode; run `cadence resume --full` (or `cadence context handoff`) for the full doc + live context\n');
33
+ }
23
34
  }
24
35
  catch (err) {
25
36
  process.stderr.write(`resume failed: ${err instanceof Error ? err.message : String(err)}\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/cli/commands/resume.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,8EAA8E,CAAC;SAC3F,MAAM,CAAC,QAAQ,EAAE,qDAAqD,CAAC;SACvE,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAC3C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;gBACjD,OAAO;YACT,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;gBAC1F,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wBAAwB,GAAG,CAAC,KAAK,CAAC,eAAe,oBAAoB,GAAG,CAAC,KAAK,CAAC,gBAAgB,MAAM,CACtG,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,WAAW,UAAU,CAAC,CAAC;YACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;QAC1E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/cli/commands/resume.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,8EAA8E,CAAC;SAC3F,MAAM,CAAC,QAAQ,EAAE,qDAAqD,CAAC;SACvE,MAAM,CAAC,QAAQ,EAAE,qDAAqD,CAAC;SACvE,MAAM,CAAC,SAAS,EAAE,2DAA2D,CAAC;SAC9E,MAAM,CAAC,KAAK,EAAE,IAAyD,EAAE,EAAE;QAC1E,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;YAC5E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YACnE,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;gBACjD,OAAO;YACT,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;gBAC1F,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wBAAwB,GAAG,CAAC,KAAK,CAAC,eAAe,oBAAoB,GAAG,CAAC,KAAK,CAAC,gBAAgB,MAAM,CACtG,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,WAAW,UAAU,CAAC,CAAC;YACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;YACxE,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4GAA4G,CAC7G,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,12 @@
1
+ /** H2-header prefixes kept in a brief resume. Matched by PREFIX because some
2
+ * rendered headers carry decorative suffixes (e.g.
3
+ * "## State on handoff · pre-filled — verify, don't retype"). */
4
+ export declare const BRIEF_SECTION_PREFIXES: readonly ["## TL;DR", "## State on handoff", "## Carry-forward gotchas", "## Next action", "## Quick resume commands"];
5
+ /**
6
+ * Return only the H2 sections whose header starts with one of `prefixes`,
7
+ * preserving document order. If none match (e.g. a pre-1.5 / hand-authored
8
+ * doc with none of the known anchors), return the full content unchanged —
9
+ * we degrade toward MORE information, never an empty resume.
10
+ */
11
+ export declare function extractBriefSections(content: string, prefixes?: readonly string[]): string;
12
+ //# sourceMappingURL=brief.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brief.d.ts","sourceRoot":"","sources":["../../src/handoff/brief.ts"],"names":[],"mappings":"AAEA;;qEAEqE;AACrE,eAAO,MAAM,sBAAsB,wHAMzB,CAAC;AAEX;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,SAAS,MAAM,EAA2B,GACnD,MAAM,CAoBR"}
@@ -0,0 +1,40 @@
1
+ // packages/core/src/handoff/brief.ts
2
+ /** H2-header prefixes kept in a brief resume. Matched by PREFIX because some
3
+ * rendered headers carry decorative suffixes (e.g.
4
+ * "## State on handoff · pre-filled — verify, don't retype"). */
5
+ export const BRIEF_SECTION_PREFIXES = [
6
+ '## TL;DR',
7
+ '## State on handoff',
8
+ '## Carry-forward gotchas',
9
+ '## Next action',
10
+ '## Quick resume commands',
11
+ ];
12
+ /**
13
+ * Return only the H2 sections whose header starts with one of `prefixes`,
14
+ * preserving document order. If none match (e.g. a pre-1.5 / hand-authored
15
+ * doc with none of the known anchors), return the full content unchanged —
16
+ * we degrade toward MORE information, never an empty resume.
17
+ */
18
+ export function extractBriefSections(content, prefixes = BRIEF_SECTION_PREFIXES) {
19
+ const lines = content.split('\n');
20
+ const sections = [];
21
+ let current = null;
22
+ for (const line of lines) {
23
+ if (line.startsWith('## ')) {
24
+ if (prefixes.some((p) => line.startsWith(p))) {
25
+ current = [line];
26
+ sections.push(current);
27
+ }
28
+ else {
29
+ current = null; // a non-brief H2 closes the previous kept section
30
+ }
31
+ continue;
32
+ }
33
+ if (current)
34
+ current.push(line);
35
+ }
36
+ if (sections.length === 0)
37
+ return content;
38
+ return sections.map((s) => s.join('\n').trimEnd()).join('\n\n') + '\n';
39
+ }
40
+ //# sourceMappingURL=brief.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brief.js","sourceRoot":"","sources":["../../src/handoff/brief.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC;;qEAEqE;AACrE,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,UAAU;IACV,qBAAqB;IACrB,0BAA0B;IAC1B,gBAAgB;IAChB,0BAA0B;CAClB,CAAC;AAEX;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAe,EACf,WAA8B,sBAAsB;IAEpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAe,EAAE,CAAC;IAChC,IAAI,OAAO,GAAoB,IAAI,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;gBACjB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,IAAI,CAAC,CAAC,kDAAkD;YACpE,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAC1C,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACzE,CAAC"}
@@ -1,3 +1,7 @@
1
1
  import type { ResumeResult } from '@manehorizons/cadence-types';
2
- export declare function runResume(root: string, now?: Date): Promise<ResumeResult>;
2
+ export interface ResumeOptions {
3
+ /** Force output mode. Omitted → drift decides: drift → 'full', else 'brief'. */
4
+ mode?: 'brief' | 'full';
5
+ }
6
+ export declare function runResume(root: string, opts?: ResumeOptions, now?: Date): Promise<ResumeResult>;
3
7
  //# sourceMappingURL=run-resume.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-resume.d.ts","sourceRoot":"","sources":["../../src/handoff/run-resume.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAKhE,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CA6B3F"}
1
+ {"version":3,"file":"run-resume.d.ts","sourceRoot":"","sources":["../../src/handoff/run-resume.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAMhE,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CACzB;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,aAAkB,EACxB,GAAG,GAAE,IAAiB,GACrB,OAAO,CAAC,YAAY,CAAC,CA+CvB"}
@@ -1,7 +1,8 @@
1
1
  import { SimpleStateBackend } from '../state/simple.js';
2
2
  import { runContext } from '../intelligence/context.js';
3
3
  import { locateFreshestHandoff } from './locate.js';
4
- export async function runResume(root, now = new Date()) {
4
+ import { extractBriefSections } from './brief.js';
5
+ export async function runResume(root, opts = {}, now = new Date()) {
5
6
  let lastHandoff = null;
6
7
  let liveLoopPosition = null;
7
8
  try {
@@ -10,22 +11,39 @@ export async function runResume(root, now = new Date()) {
10
11
  liveLoopPosition = state.loopPosition;
11
12
  }
12
13
  catch {
13
- // no/corrupt state fall back to globbing, no drift comparison
14
+ // No/corrupt state: fall back to globbing for the doc. With no live loop
15
+ // position we cannot compute drift, so `mode` resolves to 'brief' below —
16
+ // a corrupt state.json yields brief output with no drift warning. Pass
17
+ // --full to force the whole doc + live context in that case.
14
18
  }
15
19
  const located = await locateFreshestHandoff(root, lastHandoff);
16
20
  if (!located)
17
21
  return { found: false };
18
- const context = await runContext(root, 'handoff', now);
19
22
  const drift = located.loopPosition && liveLoopPosition && located.loopPosition !== liveLoopPosition
20
23
  ? { docLoopPosition: located.loopPosition, liveLoopPosition }
21
24
  : null;
25
+ const mode = opts.mode ?? (drift ? 'full' : 'brief');
26
+ if (mode === 'full') {
27
+ const context = await runContext(root, 'handoff', now);
28
+ return {
29
+ found: true,
30
+ handoffPath: located.path,
31
+ generatedAt: located.generatedAt,
32
+ doc: located.content,
33
+ context,
34
+ drift,
35
+ mode,
36
+ };
37
+ }
38
+ // brief: skip the live-context recompute entirely — the doc is authoritative
22
39
  return {
23
40
  found: true,
24
41
  handoffPath: located.path,
25
42
  generatedAt: located.generatedAt,
26
- doc: located.content,
27
- context,
43
+ doc: extractBriefSections(located.content),
44
+ context: null,
28
45
  drift,
46
+ mode,
29
47
  };
30
48
  }
31
49
  //# sourceMappingURL=run-resume.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-resume.js","sourceRoot":"","sources":["../../src/handoff/run-resume.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,MAAY,IAAI,IAAI,EAAE;IAClE,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,gBAAgB,GAAkB,IAAI,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;QAC7D,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;QACxC,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,gEAAgE;IAClE,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC/D,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAEtC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAEvD,MAAM,KAAK,GACT,OAAO,CAAC,YAAY,IAAI,gBAAgB,IAAI,OAAO,CAAC,YAAY,KAAK,gBAAgB;QACnF,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,YAAY,EAAE,gBAAgB,EAAE;QAC7D,CAAC,CAAC,IAAI,CAAC;IAEX,OAAO;QACL,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,OAAO,CAAC,IAAI;QACzB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,GAAG,EAAE,OAAO,CAAC,OAAO;QACpB,OAAO;QACP,KAAK;KACN,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"run-resume.js","sourceRoot":"","sources":["../../src/handoff/run-resume.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOlD,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAY,EACZ,OAAsB,EAAE,EACxB,MAAY,IAAI,IAAI,EAAE;IAEtB,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,gBAAgB,GAAkB,IAAI,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;QAC7D,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;QACxC,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;QACzE,0EAA0E;QAC1E,uEAAuE;QACvE,6DAA6D;IAC/D,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC/D,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAEtC,MAAM,KAAK,GACT,OAAO,CAAC,YAAY,IAAI,gBAAgB,IAAI,OAAO,CAAC,YAAY,KAAK,gBAAgB;QACnF,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,YAAY,EAAE,gBAAgB,EAAE;QAC7D,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAErD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACvD,OAAO;YACL,KAAK,EAAE,IAAI;YACX,WAAW,EAAE,OAAO,CAAC,IAAI;YACzB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,GAAG,EAAE,OAAO,CAAC,OAAO;YACpB,OAAO;YACP,KAAK;YACL,IAAI;SACL,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,OAAO;QACL,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,OAAO,CAAC,IAAI;QACzB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,GAAG,EAAE,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC;QAC1C,OAAO,EAAE,IAAI;QACb,KAAK;QACL,IAAI;KACL,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manehorizons/cadence-core",
3
- "version": "1.8.0",
3
+ "version": "1.9.0",
4
4
  "engines": {
5
5
  "node": ">=20"
6
6
  },
@@ -51,7 +51,7 @@
51
51
  "@modelcontextprotocol/sdk": "^1.29.0",
52
52
  "commander": "^13.0.0",
53
53
  "zod": "^4.4.3",
54
- "@manehorizons/cadence-types": "1.8.0"
54
+ "@manehorizons/cadence-types": "1.9.0"
55
55
  },
56
56
  "devDependencies": {
57
57
  "vitest": "^2.1.0",