@vortex-os/base 0.8.0 → 0.10.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.
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 vortex-os-project
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 vortex-os-project
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -58,7 +58,7 @@ npx vortex --list # list available commands
58
58
  npx vortex status # instance state report
59
59
  npx vortex import --from X # bring an existing notes folder into data/
60
60
  npx vortex session-start # start-of-session boot report (git pull + counts + catch-up)
61
- npx vortex session-end # worklog safety net
61
+ npx vortex session-end # no-op (kept for hook compatibility; gap handling is at session-start)
62
62
  npx vortex doctor # health diagnosis
63
63
  npx vortex update # refresh framework templates (never clobbers your edits)
64
64
  ```
package/bin/vortex.mjs CHANGED
@@ -1,17 +1,17 @@
1
- #!/usr/bin/env node
2
- // `vortex` — the CLI shipped by @vortex-os/base.
3
- //
4
- // `npm i @vortex-os/base` puts this on the instance's path (node_modules/.bin),
5
- // so `npx vortex init` / `npx vortex session-start` / `npx vortex --list` work
6
- // without any monorepo checkout. It is a thin wrapper over the canonical
7
- // dispatch (`runVortexCli`), which is bundled into base from
8
- // `@vortex-os/session-rituals` — exactly one source of truth for the CLI logic.
9
- //
10
- // The dispatch lazily probes the optional `@vortex-os/memory-extended` add-on:
11
- // when it is installed alongside base, `/recall` lights up; on a lean base-only
12
- // install the probe is caught and the CLI runs with every other command.
13
-
14
- import { sessionRituals } from "../dist/index.js";
15
-
16
- const code = await sessionRituals.runVortexCli(process.argv.slice(2));
17
- process.exitCode = code;
1
+ #!/usr/bin/env node
2
+ // `vortex` — the CLI shipped by @vortex-os/base.
3
+ //
4
+ // `npm i @vortex-os/base` puts this on the instance's path (node_modules/.bin),
5
+ // so `npx vortex init` / `npx vortex session-start` / `npx vortex --list` work
6
+ // without any monorepo checkout. It is a thin wrapper over the canonical
7
+ // dispatch (`runVortexCli`), which is bundled into base from
8
+ // `@vortex-os/session-rituals` — exactly one source of truth for the CLI logic.
9
+ //
10
+ // The dispatch lazily probes the optional `@vortex-os/memory-extended` add-on:
11
+ // when it is installed alongside base, `/recall` lights up; on a lean base-only
12
+ // install the probe is caught and the CLI runs with every other command.
13
+
14
+ import { sessionRituals } from "../dist/index.js";
15
+
16
+ const code = await sessionRituals.runVortexCli(process.argv.slice(2));
17
+ process.exitCode = code;
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  catchUpSessions
3
- } from "./chunk-3L5DLEGP.js";
3
+ } from "./chunk-7SNLVGBO.js";
4
4
  import "./chunk-PZ5AY32C.js";
5
5
  export {
6
6
  catchUpSessions
7
7
  };
8
- //# sourceMappingURL=catch-up-GDDKPZHJ.js.map
8
+ //# sourceMappingURL=catch-up-KIHTAUPX.js.map
@@ -26,4 +26,4 @@ async function catchUpSessions(ctx, opts) {
26
26
  export {
27
27
  catchUpSessions
28
28
  };
29
- //# sourceMappingURL=chunk-3L5DLEGP.js.map
29
+ //# sourceMappingURL=chunk-7SNLVGBO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../plugins/session-rituals/src/catch-up.ts"],"sourcesContent":["import type { ModuleContext } from \"@vortex-os/core\";\r\n// Type-only — erased at compile time, so importing it does NOT pull the\r\n// `@vortex-os/memory-extended` add-on (or its native sqlite/level deps) into\r\n// the module graph of consumers that only need the types. The runtime engine\r\n// is loaded lazily inside the function body via `await import(...)`.\r\nimport type { sessionArchive } from \"@vortex-os/memory-extended\";\r\n\r\n/**\r\n * Start-of-session \"catch-up\": fold conversation transcripts into the local\r\n * search archive without the user ever having to wrap up a session.\r\n *\r\n * Two sources, one pass:\r\n * - **local (a)** — this machine's own transcripts that are not archived yet,\r\n * read from every detected agent host's transcript store (Claude Code,\r\n * Codex, Gemini) and scoped to the current project. Because all hosts are\r\n * swept on every start, a single Claude Code session-start also folds in the\r\n * Codex/Gemini sessions you ran in the same project, into one archive.\r\n * - **pulled (b)** — transcripts created on another machine that arrived as\r\n * normalized text via git sync. Their text is present but this machine's\r\n * DB (local, derived, gitignored) has never indexed them.\r\n *\r\n * Text only — vectorization is deferred to recall/rebuild so session start\r\n * stays fast. The whole step is gated by `autoRecord.archive` at the call site\r\n * and is best-effort: callers should treat a thrown archive backend (e.g. the\r\n * native sqlite module not built) as \"skip\", never as a fatal start error.\r\n */\r\nexport interface CatchUpResult {\r\n /** Local transcripts newly archived this run (source a). */\r\n readonly ingestedLocal: number;\r\n /** Normalized transcripts from another machine newly indexed (source b). */\r\n readonly indexedPulled: number;\r\n /** Per-session ingest errors (source a). */\r\n readonly errors: number;\r\n}\r\n\r\nexport interface CatchUpOptions {\r\n /** Restrict local ingest to one project's transcripts. Default: `ctx.repoRoot`. */\r\n readonly cwd?: string;\r\n /**\r\n * Transcript adapters for local ingest. Default: all CLI hosts — Claude Code,\r\n * Codex, and Gemini. Each adapter's `detect()` returns false when its host is\r\n * absent, so registering all three is ~free on a machine that only uses one.\r\n * (Claude Desktop is opt-in — it needs the `classic-level` dependency — so it\r\n * is not in the default set; a caller can add it.) Tests inject fakes (or a\r\n * sandbox `env.home`) so the scan never touches the real home directory.\r\n */\r\n readonly adapters?: sessionArchive.IngestParams[\"adapters\"];\r\n /** Adapter environment override (e.g. a sandbox HOME). Tests use this. */\r\n readonly env?: sessionArchive.IngestParams[\"env\"];\r\n}\r\n\r\nexport async function catchUpSessions(\r\n ctx: ModuleContext,\r\n opts?: CatchUpOptions,\r\n): Promise<CatchUpResult> {\r\n // Lazy-load the optional add-on. Base ships without `memory-extended`; this\r\n // import resolves only when the add-on is installed alongside it. The call\r\n // site already gates this step on `autoRecord.archive` and treats a thrown\r\n // backend as \"skip\", so a missing add-on surfaces as a normal load error\r\n // the caller can catch.\r\n const { sessionArchive } = await import(\"@vortex-os/memory-extended\");\r\n\r\n const dataDir = ctx.dataDir;\r\n const cwd = opts?.cwd ?? ctx.repoRoot;\r\n const adapters = opts?.adapters ?? [\r\n sessionArchive.claudeCodeAdapter,\r\n sessionArchive.codexAdapter,\r\n sessionArchive.geminiAdapter,\r\n ];\r\n\r\n // (a) Ingest this machine's not-yet-archived transcripts for the current\r\n // project. Writes the normalized copy into the archive (which git syncs) and\r\n // a local DB row. Text only — no vectorization here.\r\n const ingestResult = await sessionArchive.ingest({ adapters, dataDir, cwd, env: opts?.env });\r\n\r\n // (b) Index normalized transcripts that arrived from another machine via git\r\n // pull — their text is on disk but this machine's DB has no row yet.\r\n const store = new sessionArchive.SessionArchiveStore(dataDir);\r\n let indexedPulled = 0;\r\n try {\r\n indexedPulled = store.reindexFromNormalized().indexed;\r\n } finally {\r\n store.close();\r\n }\r\n\r\n return {\r\n ingestedLocal: ingestResult.sessionsIngested,\r\n indexedPulled,\r\n errors: ingestResult.errors.length,\r\n };\r\n}\r\n"],"mappings":";AAmDA,eAAsB,gBACpB,KACA,MAAqB;AAOrB,QAAM,EAAE,eAAc,IAAK,MAAM,OAAO,4BAA4B;AAEpE,QAAM,UAAU,IAAI;AACpB,QAAM,MAAM,MAAM,OAAO,IAAI;AAC7B,QAAM,WAAW,MAAM,YAAY;IACjC,eAAe;IACf,eAAe;IACf,eAAe;;AAMjB,QAAM,eAAe,MAAM,eAAe,OAAO,EAAE,UAAU,SAAS,KAAK,KAAK,MAAM,IAAG,CAAE;AAI3F,QAAM,QAAQ,IAAI,eAAe,oBAAoB,OAAO;AAC5D,MAAI,gBAAgB;AACpB,MAAI;AACF,oBAAgB,MAAM,sBAAqB,EAAG;EAChD;AACE,UAAM,MAAK;EACb;AAEA,SAAO;IACL,eAAe,aAAa;IAC5B;IACA,QAAQ,aAAa,OAAO;;AAEhC;","names":[]}
package/dist/index.d.ts CHANGED
@@ -146,6 +146,39 @@ interface AutoRecordConfig {
146
146
  * wait for you to merge.
147
147
  */
148
148
  readonly commitFrameworkChanges: boolean;
149
+ /**
150
+ * Use the dedicated session hand-off store (`data/_handoff/`) — a forward-
151
+ * looking baton kept separate from the worklog. On by default. When off,
152
+ * hand-offs fall back to the legacy `## 다음 작업` worklog section and no
153
+ * auto-archiving runs.
154
+ */
155
+ readonly handoff: boolean;
156
+ /**
157
+ * Days a hand-off stays "active" before session start sweeps it to
158
+ * `_handoff/_archive/` (deterministic, age-based — git keeps the history).
159
+ * Default 7 (covers a week-long absence); set lower to tidy faster, higher to
160
+ * keep more around. A non-positive / malformed value falls back to the default.
161
+ */
162
+ readonly handoffRetentionDays: number;
163
+ /**
164
+ * Auto-reindex the on-demand memory index (`_memory/_INDEX.md`) at session
165
+ * start when it looks stale (a memory file is newer than the index).
166
+ * Mechanical and idempotent — it only rewrites `_INDEX.md` from each memory's
167
+ * frontmatter, never a memory's content, and writes only when the rendered
168
+ * index actually changes (then refreshes the index's mtime so the stale flag
169
+ * clears). On by default; off → the start report just flags the stale index
170
+ * for the agent to fix instead of fixing it automatically.
171
+ */
172
+ readonly reindex: boolean;
173
+ /**
174
+ * Auto-backfill a missed worklog. When a past day had commits but no worklog,
175
+ * the in-session agent reconstructs and writes it at the next session start
176
+ * (zero-worklog days only, capped, labeled as reconstructed — see AI-RULES.md
177
+ * "Default behaviors"). Gated by `worklog` as well: turning `worklog` off
178
+ * suppresses backfill too. On by default; off → the start report still flags
179
+ * the gap but the agent leaves it for you.
180
+ */
181
+ readonly backfill: boolean;
149
182
  }
150
183
  /**
151
184
  * One environment label plus the signal that selects it. Rules are evaluated
@@ -896,11 +929,14 @@ interface WorklogFrontmatter {
896
929
  * A parsed worklog entry.
897
930
  *
898
931
  * `date` is the ISO date portion of the filename (`YYYY-MM-DD`).
932
+ * `time` is the optional `HHMM` creation-time segment (`YYYY-MM-DD_HHMM-…`);
933
+ * absent on legacy names that predate the time convention.
899
934
  * `keyword` is the trailing slug portion of the filename without `.md`.
900
935
  * `path` is the absolute path of the file on disk.
901
936
  */
902
937
  interface WorklogEntry {
903
938
  readonly date: string;
939
+ readonly time?: string;
904
940
  readonly keyword: string;
905
941
  readonly path: string;
906
942
  readonly frontmatter: WorklogFrontmatter;
@@ -929,7 +965,7 @@ declare class WorklogStore {
929
965
  /** Most recent entry by date (descending), then keyword (descending). */
930
966
  getLatest(): Promise<WorklogEntry | undefined>;
931
967
  /** Resolve the file path for a given (date, keyword), without creating it. */
932
- pathFor(date: string, keyword: string): string;
968
+ pathFor(date: string, keyword: string, time?: string): string;
933
969
  private listSubdirs;
934
970
  private entriesIn;
935
971
  }
@@ -3012,6 +3048,16 @@ interface SessionStartReport {
3012
3048
  */
3013
3049
  declare const sessionStartCommand: Command<SessionStartReport>;
3014
3050
 
3051
+ /**
3052
+ * The single gap-detection window (days). Worklog-gap detection compares two
3053
+ * sets over the SAME span: worklog dates present (filtered here) and commit days
3054
+ * (the hook supplies them). The commit lookup MUST use this same window — see
3055
+ * `gapWindowSinceArg()` — or gaps older than the commit lookup are invisible
3056
+ * while younger-than-the-worklog-window dates leak in. Keep them aligned.
3057
+ */
3058
+ declare const DEFAULT_GAP_WINDOW_DAYS = 30;
3059
+ /** `git log --since=<this>` argument for commit-day lookup — aligned to the worklog window. */
3060
+ declare function gapWindowSinceArg(): string;
3015
3061
  interface RecentWorklog {
3016
3062
  /** Path relative to the data directory (e.g. `worklog/2026/05/2026-05-30-foo.md`). */
3017
3063
  readonly path: string;
@@ -3096,6 +3142,22 @@ interface SessionStartHookReport {
3096
3142
  * exist but `_INDEX.md` is missing, or a `_memory/*.md` is newer than it.
3097
3143
  */
3098
3144
  readonly memoryIndexStale: boolean;
3145
+ /**
3146
+ * Active session hand-offs (`data/_handoff/`, newest first) — the forward-
3147
+ * looking "resume from here" batons, kept separate from the worklog. Each
3148
+ * carries a SANITIZED title and its next-step lines. Multiple are NORMAL
3149
+ * (concurrent sessions). When any exist they are the canonical resume surface
3150
+ * and the render shows them in place of the worklog-derived `nextUp`.
3151
+ */
3152
+ readonly handoffs: readonly {
3153
+ readonly date: string;
3154
+ readonly time: string;
3155
+ readonly path: string;
3156
+ readonly title: string;
3157
+ readonly nextUp: readonly string[];
3158
+ }[];
3159
+ /** Active hand-offs beyond the surfaced cap (0 = none). */
3160
+ readonly handoffsOmitted: number;
3099
3161
  }
3100
3162
  /**
3101
3163
  * Gather the read-only facts for a start-of-session report: data-dir counts,
@@ -3141,6 +3203,10 @@ declare function renderSessionStartReport(report: SessionStartHookReport, extras
3141
3203
  */
3142
3204
  readonly baseVersion?: string | null;
3143
3205
  readonly missingWorklogDays?: readonly string[];
3206
+ /** Hand-offs swept to `_handoff/_archive/` by the age-based prune this run. */
3207
+ readonly handoffPrune?: {
3208
+ readonly archived: number;
3209
+ };
3144
3210
  readonly catchUp?: {
3145
3211
  readonly ingestedLocal: number;
3146
3212
  readonly indexedPulled: number;
@@ -3284,6 +3350,17 @@ interface ReindexResult {
3284
3350
  * directories are reported as `missing` (no write attempted).
3285
3351
  */
3286
3352
  declare const reindexCommand: Command<readonly ReindexResult[]>;
3353
+ /**
3354
+ * Auto-reindex `_memory/_INDEX.md` at session start (gated by
3355
+ * `autoRecord.reindex`). Mechanical and idempotent: it rewrites the index only
3356
+ * when the rendered content changes, then refreshes the index file's mtime so
3357
+ * the stale flag — newest `_memory/*.md` mtime > `_INDEX.md` mtime, see
3358
+ * `scanMemoryTiers` — clears even when the content was unchanged (a memory's
3359
+ * BODY changed but its one-line index row did not). Touching identical content
3360
+ * changes only mtime, so there is no git churn. Best-effort: any error returns
3361
+ * `"error"` and never blocks session start.
3362
+ */
3363
+ declare function autoReindexMemory(ctx: ModuleContext): Promise<ReindexResult["status"] | "error">;
3287
3364
 
3288
3365
  interface NewDecisionResult {
3289
3366
  readonly path: string;
@@ -3318,6 +3395,94 @@ interface WorklogAppendResult {
3318
3395
  */
3319
3396
  declare const logCommand: Command<WorklogAppendResult>;
3320
3397
 
3398
+ interface HandoffCreateResult {
3399
+ readonly path: string;
3400
+ readonly date: string;
3401
+ readonly time: string;
3402
+ }
3403
+ /**
3404
+ * `/handoff [title]` — Create a new, empty session hand-off file under
3405
+ * `data/_handoff/` (named `YYYY-MM-DD_HHMM.md`, with a `-2` suffix only on a
3406
+ * same-minute collision) and return its path for the agent to fill in.
3407
+ *
3408
+ * Deliberately small, mirroring `/log`: the host creates the file SAFELY
3409
+ * (atomic exclusive create, so a concurrent session never clobbers another's
3410
+ * baton), and the agent writes the actual hand-off content into the returned
3411
+ * file. The hand-off is a forward-looking baton kept separate from the worklog;
3412
+ * old ones are swept to `_handoff/_archive/` automatically at session start.
3413
+ */
3414
+ declare const handoffCommand: Command<HandoffCreateResult>;
3415
+
3416
+ /**
3417
+ * Session hand-off store: `data/_handoff/`.
3418
+ *
3419
+ * A hand-off is a forward-looking baton — "where this session stopped and what
3420
+ * the next one should pick up" — kept SEPARATE from the worklog (the permanent,
3421
+ * backward-looking record). One file per session, named
3422
+ * `YYYY-MM-DD_HHMM.md` (a `-2`/`-3` suffix is added only when two sessions wrap
3423
+ * in the same minute, so a concurrent session never clobbers another's baton).
3424
+ * The file is created with an EXCLUSIVE open (`wx`) so that collision handling
3425
+ * is atomic, not an LLM ritual. Old hand-offs are swept to `_handoff/_archive/`
3426
+ * by {@link pruneHandoffs} (deterministic, age-based) — git keeps the history.
3427
+ *
3428
+ * Design rationale + the alternatives rejected (carry-forward, archive-on-
3429
+ * consume): decision-log `2026-06-07-핸드오프-세션단위-분리-자동정리`.
3430
+ */
3431
+ declare const HANDOFF_DIR = "_handoff";
3432
+ declare const HANDOFF_ARCHIVE_DIR = "_archive";
3433
+ interface HandoffWriteResult {
3434
+ readonly path: string;
3435
+ readonly name: string;
3436
+ readonly date: string;
3437
+ readonly time: string;
3438
+ }
3439
+ /**
3440
+ * Create a new, EMPTY-skeleton hand-off file and return its path for the agent
3441
+ * to fill in (mirrors `/log`: the host creates the file safely, the agent writes
3442
+ * the content). Atomic exclusive create; on a same-minute collision a numeric
3443
+ * suffix is appended so a concurrent session's file is never overwritten.
3444
+ */
3445
+ declare function createHandoffSkeleton(dataDir: string, opts?: {
3446
+ readonly now?: Date;
3447
+ readonly title?: string;
3448
+ }): Promise<HandoffWriteResult>;
3449
+ interface HandoffSummary {
3450
+ readonly date: string;
3451
+ readonly time: string;
3452
+ /** Path relative to the data dir, e.g. `_handoff/2026-06-07_1604.md`. */
3453
+ readonly relPath: string;
3454
+ /** First `# ` heading, else the filename. RAW — the caller sanitizes. */
3455
+ readonly title: string;
3456
+ /** Hand-off `## 다음 작업` lines (via {@link extractNextUp}). RAW. */
3457
+ readonly nextUp: readonly string[];
3458
+ }
3459
+ /**
3460
+ * List the ACTIVE hand-offs (everything under `_handoff/` except `_archive/`),
3461
+ * newest first. Returns up to `max` summaries with the count omitted beyond it,
3462
+ * so a busy stretch of many small hand-offs stays a bounded pointer at session
3463
+ * start. Multiple active hand-offs are NORMAL (concurrent sessions) — the caller
3464
+ * surfaces them all, not as an exceptional state.
3465
+ */
3466
+ declare function scanHandoffs(dataDir: string, opts?: {
3467
+ readonly max?: number;
3468
+ }): Promise<{
3469
+ active: HandoffSummary[];
3470
+ omitted: number;
3471
+ }>;
3472
+ /**
3473
+ * Sweep hand-offs older than `retentionDays` into `_handoff/_archive/`
3474
+ * (deterministic, age-based — NOT an LLM step, so it cannot drift). Idempotent
3475
+ * and concurrency-tolerant: a file already moved by a racing session is simply
3476
+ * skipped. Git keeps the full history, so this is a working-tree tidy, not a
3477
+ * destructive delete. Returns how many were archived.
3478
+ */
3479
+ declare function pruneHandoffs(dataDir: string, opts: {
3480
+ readonly now?: Date;
3481
+ readonly retentionDays: number;
3482
+ }): Promise<{
3483
+ archived: number;
3484
+ }>;
3485
+
3321
3486
  /**
3322
3487
  * "What should I do today?" — a read-only synthesis over existing records
3323
3488
  * (worklog + decision-log + open `- [ ]` checkboxes), the P2 work-management
@@ -3848,9 +4013,15 @@ type index_d_CuratePayload = CuratePayload;
3848
4013
  type index_d_CuratePayloadValidation = CuratePayloadValidation;
3849
4014
  type index_d_CuratePreviewResult = CuratePreviewResult;
3850
4015
  type index_d_CurateResult = CurateResult;
4016
+ declare const index_d_DEFAULT_GAP_WINDOW_DAYS: typeof DEFAULT_GAP_WINDOW_DAYS;
3851
4017
  type index_d_EnsureHooksResult = EnsureHooksResult;
3852
4018
  type index_d_EnsureWorklogResult = EnsureWorklogResult;
3853
4019
  type index_d_GitPullResult = GitPullResult;
4020
+ declare const index_d_HANDOFF_ARCHIVE_DIR: typeof HANDOFF_ARCHIVE_DIR;
4021
+ declare const index_d_HANDOFF_DIR: typeof HANDOFF_DIR;
4022
+ type index_d_HandoffCreateResult = HandoffCreateResult;
4023
+ type index_d_HandoffSummary = HandoffSummary;
4024
+ type index_d_HandoffWriteResult = HandoffWriteResult;
3854
4025
  type index_d_NewDecisionResult = NewDecisionResult;
3855
4026
  declare const index_d_OWNERSHIP_SCHEMA: typeof OWNERSHIP_SCHEMA;
3856
4027
  type index_d_OpenDecision = OpenDecision;
@@ -3883,6 +4054,7 @@ declare const index_d_agendaCommand: typeof agendaCommand;
3883
4054
  declare const index_d_aggregateHandoff: typeof aggregateHandoff;
3884
4055
  declare const index_d_applyGlobalSetup: typeof applyGlobalSetup;
3885
4056
  declare const index_d_argvToSlash: typeof argvToSlash;
4057
+ declare const index_d_autoReindexMemory: typeof autoReindexMemory;
3886
4058
  declare const index_d_buildInstallCommand: typeof buildInstallCommand;
3887
4059
  declare const index_d_buildOwnershipManifest: typeof buildOwnershipManifest;
3888
4060
  declare const index_d_buildRegistry: typeof buildRegistry;
@@ -3895,6 +4067,7 @@ declare const index_d_compareSemver: typeof compareSemver;
3895
4067
  declare const index_d_computeCurateFingerprint: typeof computeCurateFingerprint;
3896
4068
  declare const index_d_countUncommitted: typeof countUncommitted;
3897
4069
  declare const index_d_createAmbientRecaller: typeof createAmbientRecaller;
4070
+ declare const index_d_createHandoffSkeleton: typeof createHandoffSkeleton;
3898
4071
  declare const index_d_createRitualRegistry: typeof createRitualRegistry;
3899
4072
  declare const index_d_curateCommand: typeof curateCommand;
3900
4073
  declare const index_d_decisionCommand: typeof decisionCommand;
@@ -3904,10 +4077,12 @@ declare const index_d_ensureVortexHooks: typeof ensureVortexHooks;
3904
4077
  declare const index_d_ensureWorklogEntry: typeof ensureWorklogEntry;
3905
4078
  declare const index_d_extractNextUp: typeof extractNextUp;
3906
4079
  declare const index_d_extractOpenTasks: typeof extractOpenTasks;
4080
+ declare const index_d_gapWindowSinceArg: typeof gapWindowSinceArg;
3907
4081
  declare const index_d_globalMemoryPath: typeof globalMemoryPath;
3908
4082
  declare const index_d_globalSettingsHasHook: typeof globalSettingsHasHook;
3909
4083
  declare const index_d_globalSettingsPath: typeof globalSettingsPath;
3910
4084
  declare const index_d_globalStatePath: typeof globalStatePath;
4085
+ declare const index_d_handoffCommand: typeof handoffCommand;
3911
4086
  declare const index_d_inspectGlobalSetup: typeof inspectGlobalSetup;
3912
4087
  declare const index_d_inspectOwnership: typeof inspectOwnership;
3913
4088
  declare const index_d_isInstanceRoot: typeof isInstanceRoot;
@@ -3917,6 +4092,7 @@ declare const index_d_logCommand: typeof logCommand;
3917
4092
  declare const index_d_ownershipManifestPath: typeof ownershipManifestPath;
3918
4093
  declare const index_d_parseAdoptArgs: typeof parseAdoptArgs;
3919
4094
  declare const index_d_parseSettings: typeof parseSettings;
4095
+ declare const index_d_pruneHandoffs: typeof pruneHandoffs;
3920
4096
  declare const index_d_queryNpmLatest: typeof queryNpmLatest;
3921
4097
  declare const index_d_readGlobalInstancePointer: typeof readGlobalInstancePointer;
3922
4098
  declare const index_d_readInstalledBaseVersion: typeof readInstalledBaseVersion;
@@ -3934,6 +4110,7 @@ declare const index_d_runCurateDecline: typeof runCurateDecline;
3934
4110
  declare const index_d_runCuratePreview: typeof runCuratePreview;
3935
4111
  declare const index_d_runTemplatesUpdate: typeof runTemplatesUpdate;
3936
4112
  declare const index_d_runVortexCli: typeof runVortexCli;
4113
+ declare const index_d_scanHandoffs: typeof scanHandoffs;
3937
4114
  declare const index_d_serializeSettings: typeof serializeSettings;
3938
4115
  declare const index_d_sessionStartCommand: typeof sessionStartCommand;
3939
4116
  declare const index_d_templateDestRelPath: typeof templateDestRelPath;
@@ -3942,7 +4119,7 @@ declare const index_d_validateCuratePayload: typeof validateCuratePayload;
3942
4119
  declare const index_d_vortexCommand: typeof vortexCommand;
3943
4120
  declare const index_d_writeOwnershipManifest: typeof writeOwnershipManifest;
3944
4121
  declare namespace index_d {
3945
- export { type index_d_AgendaReport as AgendaReport, type index_d_AmbientRecallFactoryOptions as AmbientRecallFactoryOptions, type index_d_CatchUpOptions as CatchUpOptions, type index_d_CatchUpResult as CatchUpResult, type index_d_ClaudeSettings as ClaudeSettings, type index_d_CliIo as CliIo, type index_d_CollectAgendaOptions as CollectAgendaOptions, type index_d_CurateAcceptResult as CurateAcceptResult, type index_d_CurateActionKind as CurateActionKind, type index_d_CurateAnyProposal as CurateAnyProposal, type index_d_CurateCandidate as CurateCandidate, type index_d_CurateCandidatesResult as CurateCandidatesResult, type index_d_CurateDeclineResult as CurateDeclineResult, type index_d_CurateOptions as CurateOptions, type index_d_CuratePayload as CuratePayload, type index_d_CuratePayloadValidation as CuratePayloadValidation, type index_d_CuratePreviewResult as CuratePreviewResult, type index_d_CurateResult as CurateResult, type index_d_EnsureHooksResult as EnsureHooksResult, type index_d_EnsureWorklogResult as EnsureWorklogResult, type index_d_GitPullResult as GitPullResult, type index_d_NewDecisionResult as NewDecisionResult, index_d_OWNERSHIP_SCHEMA as OWNERSHIP_SCHEMA, type index_d_OpenDecision as OpenDecision, type index_d_OpenTask as OpenTask, type index_d_OwnershipDiagnosis as OwnershipDiagnosis, type index_d_OwnershipEntry as OwnershipEntry, type index_d_OwnershipManifest as OwnershipManifest, type index_d_RecallOptions as RecallOptions, type index_d_RecentWorklog as RecentWorklog, type index_d_ReindexResult as ReindexResult, type index_d_RitualRegistryOptions as RitualRegistryOptions, index_d_SESSION_END_COMMAND as SESSION_END_COMMAND, index_d_SESSION_START_COMMAND as SESSION_START_COMMAND, type index_d_SessionStartHookReport as SessionStartHookReport, type index_d_SessionStartReport as SessionStartReport, type index_d_UpdateCheckResult as UpdateCheckResult, type index_d_UpdateFileAction as UpdateFileAction, type index_d_UpdateFileActionKind as UpdateFileActionKind, type index_d_VortexHelpResult as VortexHelpResult, type index_d_VortexInitResult as VortexInitResult, type index_d_VortexPlannedResult as VortexPlannedResult, type index_d_VortexResult as VortexResult, type index_d_VortexSyncResult as VortexSyncResult, type index_d_VortexSyncStep as VortexSyncStep, type index_d_VortexSyncStepId as VortexSyncStepId, type index_d_VortexSyncStepStatus as VortexSyncStepStatus, type index_d_VortexUpdateResult as VortexUpdateResult, type index_d_WorklogAppendResult as WorklogAppendResult, index_d_agendaCommand as agendaCommand, index_d_aggregateHandoff as aggregateHandoff, index_d_applyGlobalSetup as applyGlobalSetup, index_d_argvToSlash as argvToSlash, index_d_buildInstallCommand as buildInstallCommand, index_d_buildOwnershipManifest as buildOwnershipManifest, index_d_buildRegistry as buildRegistry, index_d_catchUpSessions as catchUpSessions, index_d_checkBaseUpdate as checkBaseUpdate, index_d_collectAgenda as collectAgenda, index_d_collectCarryover as collectCarryover, index_d_collectSessionStartReport as collectSessionStartReport, index_d_compareSemver as compareSemver, index_d_computeCurateFingerprint as computeCurateFingerprint, index_d_countUncommitted as countUncommitted, index_d_createAmbientRecaller as createAmbientRecaller, index_d_createRitualRegistry as createRitualRegistry, index_d_curateCommand as curateCommand, index_d_decisionCommand as decisionCommand, index_d_detectInterruptedGitOp as detectInterruptedGitOp, index_d_detectWorklogGaps as detectWorklogGaps, index_d_ensureVortexHooks as ensureVortexHooks, index_d_ensureWorklogEntry as ensureWorklogEntry, index_d_extractNextUp as extractNextUp, index_d_extractOpenTasks as extractOpenTasks, index_d_globalMemoryPath as globalMemoryPath, index_d_globalSettingsHasHook as globalSettingsHasHook, index_d_globalSettingsPath as globalSettingsPath, index_d_globalStatePath as globalStatePath, index_d_inspectGlobalSetup as inspectGlobalSetup, index_d_inspectOwnership as inspectOwnership, index_d_isInstanceRoot as isInstanceRoot, index_d_isNewer as isNewer, index_d_isStableUpdate as isStableUpdate, index_d_logCommand as logCommand, index_d_ownershipManifestPath as ownershipManifestPath, index_d_parseAdoptArgs as parseAdoptArgs, index_d_parseSettings as parseSettings, index_d_queryNpmLatest as queryNpmLatest, index_d_readGlobalInstancePointer as readGlobalInstancePointer, index_d_readInstalledBaseVersion as readInstalledBaseVersion, index_d_recallCommand as recallCommand, index_d_recordGlobalSetupDecline as recordGlobalSetupDecline, index_d_reindexCommand as reindexCommand, index_d_renderAgenda as renderAgenda, index_d_renderGlobalBlock as renderGlobalBlock, index_d_renderSessionStartReport as renderSessionStartReport, index_d_repairOwnershipManifest as repairOwnershipManifest, index_d_resolveRepoRoot as resolveRepoRoot, index_d_runCurateAccept as runCurateAccept, index_d_runCurateCandidates as runCurateCandidates, index_d_runCurateDecline as runCurateDecline, index_d_runCuratePreview as runCuratePreview, index_d_runTemplatesUpdate as runTemplatesUpdate, index_d_runVortexCli as runVortexCli, index_d_serializeSettings as serializeSettings, index_d_sessionStartCommand as sessionStartCommand, index_d_templateDestRelPath as templateDestRelPath, index_d_upsertGlobalBlock as upsertGlobalBlock, index_d_validateCuratePayload as validateCuratePayload, index_d_vortexCommand as vortexCommand, index_d_writeOwnershipManifest as writeOwnershipManifest };
4122
+ export { type index_d_AgendaReport as AgendaReport, type index_d_AmbientRecallFactoryOptions as AmbientRecallFactoryOptions, type index_d_CatchUpOptions as CatchUpOptions, type index_d_CatchUpResult as CatchUpResult, type index_d_ClaudeSettings as ClaudeSettings, type index_d_CliIo as CliIo, type index_d_CollectAgendaOptions as CollectAgendaOptions, type index_d_CurateAcceptResult as CurateAcceptResult, type index_d_CurateActionKind as CurateActionKind, type index_d_CurateAnyProposal as CurateAnyProposal, type index_d_CurateCandidate as CurateCandidate, type index_d_CurateCandidatesResult as CurateCandidatesResult, type index_d_CurateDeclineResult as CurateDeclineResult, type index_d_CurateOptions as CurateOptions, type index_d_CuratePayload as CuratePayload, type index_d_CuratePayloadValidation as CuratePayloadValidation, type index_d_CuratePreviewResult as CuratePreviewResult, type index_d_CurateResult as CurateResult, index_d_DEFAULT_GAP_WINDOW_DAYS as DEFAULT_GAP_WINDOW_DAYS, type index_d_EnsureHooksResult as EnsureHooksResult, type index_d_EnsureWorklogResult as EnsureWorklogResult, type index_d_GitPullResult as GitPullResult, index_d_HANDOFF_ARCHIVE_DIR as HANDOFF_ARCHIVE_DIR, index_d_HANDOFF_DIR as HANDOFF_DIR, type index_d_HandoffCreateResult as HandoffCreateResult, type index_d_HandoffSummary as HandoffSummary, type index_d_HandoffWriteResult as HandoffWriteResult, type index_d_NewDecisionResult as NewDecisionResult, index_d_OWNERSHIP_SCHEMA as OWNERSHIP_SCHEMA, type index_d_OpenDecision as OpenDecision, type index_d_OpenTask as OpenTask, type index_d_OwnershipDiagnosis as OwnershipDiagnosis, type index_d_OwnershipEntry as OwnershipEntry, type index_d_OwnershipManifest as OwnershipManifest, type index_d_RecallOptions as RecallOptions, type index_d_RecentWorklog as RecentWorklog, type index_d_ReindexResult as ReindexResult, type index_d_RitualRegistryOptions as RitualRegistryOptions, index_d_SESSION_END_COMMAND as SESSION_END_COMMAND, index_d_SESSION_START_COMMAND as SESSION_START_COMMAND, type index_d_SessionStartHookReport as SessionStartHookReport, type index_d_SessionStartReport as SessionStartReport, type index_d_UpdateCheckResult as UpdateCheckResult, type index_d_UpdateFileAction as UpdateFileAction, type index_d_UpdateFileActionKind as UpdateFileActionKind, type index_d_VortexHelpResult as VortexHelpResult, type index_d_VortexInitResult as VortexInitResult, type index_d_VortexPlannedResult as VortexPlannedResult, type index_d_VortexResult as VortexResult, type index_d_VortexSyncResult as VortexSyncResult, type index_d_VortexSyncStep as VortexSyncStep, type index_d_VortexSyncStepId as VortexSyncStepId, type index_d_VortexSyncStepStatus as VortexSyncStepStatus, type index_d_VortexUpdateResult as VortexUpdateResult, type index_d_WorklogAppendResult as WorklogAppendResult, index_d_agendaCommand as agendaCommand, index_d_aggregateHandoff as aggregateHandoff, index_d_applyGlobalSetup as applyGlobalSetup, index_d_argvToSlash as argvToSlash, index_d_autoReindexMemory as autoReindexMemory, index_d_buildInstallCommand as buildInstallCommand, index_d_buildOwnershipManifest as buildOwnershipManifest, index_d_buildRegistry as buildRegistry, index_d_catchUpSessions as catchUpSessions, index_d_checkBaseUpdate as checkBaseUpdate, index_d_collectAgenda as collectAgenda, index_d_collectCarryover as collectCarryover, index_d_collectSessionStartReport as collectSessionStartReport, index_d_compareSemver as compareSemver, index_d_computeCurateFingerprint as computeCurateFingerprint, index_d_countUncommitted as countUncommitted, index_d_createAmbientRecaller as createAmbientRecaller, index_d_createHandoffSkeleton as createHandoffSkeleton, index_d_createRitualRegistry as createRitualRegistry, index_d_curateCommand as curateCommand, index_d_decisionCommand as decisionCommand, index_d_detectInterruptedGitOp as detectInterruptedGitOp, index_d_detectWorklogGaps as detectWorklogGaps, index_d_ensureVortexHooks as ensureVortexHooks, index_d_ensureWorklogEntry as ensureWorklogEntry, index_d_extractNextUp as extractNextUp, index_d_extractOpenTasks as extractOpenTasks, index_d_gapWindowSinceArg as gapWindowSinceArg, index_d_globalMemoryPath as globalMemoryPath, index_d_globalSettingsHasHook as globalSettingsHasHook, index_d_globalSettingsPath as globalSettingsPath, index_d_globalStatePath as globalStatePath, index_d_handoffCommand as handoffCommand, index_d_inspectGlobalSetup as inspectGlobalSetup, index_d_inspectOwnership as inspectOwnership, index_d_isInstanceRoot as isInstanceRoot, index_d_isNewer as isNewer, index_d_isStableUpdate as isStableUpdate, index_d_logCommand as logCommand, index_d_ownershipManifestPath as ownershipManifestPath, index_d_parseAdoptArgs as parseAdoptArgs, index_d_parseSettings as parseSettings, index_d_pruneHandoffs as pruneHandoffs, index_d_queryNpmLatest as queryNpmLatest, index_d_readGlobalInstancePointer as readGlobalInstancePointer, index_d_readInstalledBaseVersion as readInstalledBaseVersion, index_d_recallCommand as recallCommand, index_d_recordGlobalSetupDecline as recordGlobalSetupDecline, index_d_reindexCommand as reindexCommand, index_d_renderAgenda as renderAgenda, index_d_renderGlobalBlock as renderGlobalBlock, index_d_renderSessionStartReport as renderSessionStartReport, index_d_repairOwnershipManifest as repairOwnershipManifest, index_d_resolveRepoRoot as resolveRepoRoot, index_d_runCurateAccept as runCurateAccept, index_d_runCurateCandidates as runCurateCandidates, index_d_runCurateDecline as runCurateDecline, index_d_runCuratePreview as runCuratePreview, index_d_runTemplatesUpdate as runTemplatesUpdate, index_d_runVortexCli as runVortexCli, index_d_scanHandoffs as scanHandoffs, index_d_serializeSettings as serializeSettings, index_d_sessionStartCommand as sessionStartCommand, index_d_templateDestRelPath as templateDestRelPath, index_d_upsertGlobalBlock as upsertGlobalBlock, index_d_validateCuratePayload as validateCuratePayload, index_d_vortexCommand as vortexCommand, index_d_writeOwnershipManifest as writeOwnershipManifest };
3946
4123
  }
3947
4124
 
3948
4125
  export { index_d$9 as aiCodingPitfalls, index_d$d as core, index_d$a as dataLint, index_d$5 as decisionLog, index_d$4 as indexGenerator, index_d$2 as linkRewriter, index_d$b as memorySystem, index_d$1 as proactiveCurator, index_d$7 as reportGenerator, index_d$3 as runbooks, index_d as sessionRituals, index_d$c as slashCommands, index_d$8 as toolRules, index_d$6 as worklog };