@vortex-os/base 0.2.3 → 0.4.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/README.md +39 -1
- package/bin/vortex.mjs +17 -0
- package/dist/catch-up-ZQN7HMMN.js +7 -0
- package/dist/catch-up-ZQN7HMMN.js.map +1 -0
- package/dist/chunk-6SO4DAWJ.js +32 -0
- package/dist/chunk-6SO4DAWJ.js.map +1 -0
- package/dist/index.d.ts +314 -6
- package/dist/index.js +0 -0
- package/dist/index.js.map +1 -1
- package/package.json +8 -2
- package/templates/commands/agenda.md +15 -0
- package/templates/commands/curate.md +48 -0
- package/templates/commands/recall.md +17 -0
- package/templates/config/vortex.json +10 -0
- package/templates/routers/.cursorrules +14 -0
- package/templates/routers/AGENT.md +93 -0
- package/templates/routers/AGENTS.md +18 -0
- package/templates/routers/CLAUDE.md +20 -0
- package/templates/routers/CODEX.md +16 -0
- package/templates/routers/GEMINI.md +14 -0
package/README.md
CHANGED
|
@@ -18,7 +18,40 @@ Base entry point for **VortEX** — a Multi-Agent Personal AI Work OS framework.
|
|
|
18
18
|
npm install @vortex-os/base
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
##
|
|
21
|
+
## Quick start — one install, then `init`
|
|
22
|
+
|
|
23
|
+
`@vortex-os/base` ships a `vortex` CLI, so a working instance is three steps:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install @vortex-os/base # install the framework into a new folder
|
|
27
|
+
npx vortex init # scaffold the instance (asks for name / role / task)
|
|
28
|
+
# then open your agent (e.g. `claude`) in that folder
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
`npx vortex init` is non-destructive and creates, in the current folder:
|
|
32
|
+
|
|
33
|
+
- the five per-agent router files — `AGENT.md`, `CLAUDE.md`, `CODEX.md`, `GEMINI.md`, `.cursorrules` — so any agent host finds VortEX's behavior contract (these are generic templates you personalize over time);
|
|
34
|
+
- the `data/` skeleton (`_memory/`, `worklog/`, `decision-log/`, `runbooks/`, `hubs/`, `inbox/`), your user-profile memory, and today's first worklog;
|
|
35
|
+
- `.claude/settings.json` with the session hooks wired as `npx --no-install -p @vortex-os/base vortex session-start` / `… session-end` (the `--no-install` flag and explicit `-p` package make the auto-firing hook fail closed rather than install or shadow), plus the agent-mediated slash-commands in `.claude/commands/`;
|
|
36
|
+
- `.agent/vortex.json` (auto-record config) and a minimal `package.json` with `"type":"module"` if none exists.
|
|
37
|
+
|
|
38
|
+
Pass the answers inline to skip the prompts:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npx vortex init --name "Alex" --role "engineer" --task "set up my work notes"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Other CLI entry points (all run base-only — `/recall` lights up only when the optional add-on is installed):
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npx vortex --list # list available commands
|
|
48
|
+
npx vortex status # instance state report
|
|
49
|
+
npx vortex session-start # start-of-session boot report (git pull + counts + catch-up)
|
|
50
|
+
npx vortex session-end # worklog safety net
|
|
51
|
+
npx vortex doctor # health diagnosis
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Library usage
|
|
22
55
|
|
|
23
56
|
```ts
|
|
24
57
|
import {
|
|
@@ -95,6 +128,11 @@ Future capability clusters publish as siblings under the `@vortex-os` scope and
|
|
|
95
128
|
|
|
96
129
|
Each add-on installs alongside the base and extends what the agent can do without forcing a base upgrade.
|
|
97
130
|
|
|
131
|
+
## Privacy & network behavior
|
|
132
|
+
|
|
133
|
+
- **`vortex init` folder scan.** To suggest content you might want to import, `init` does a read-only scan for common notes-folder names (e.g. an Obsidian vault, a `notes/` directory) under your home directory. It only reads directory listings to count Markdown files and surface a hint — it never copies, modifies, or transmits anything. Import happens only when you explicitly run `vortex import --from <path>`.
|
|
134
|
+
- **No network calls in the base.** Base itself makes no outbound network requests. The optional `@vortex-os/memory-extended` add-on, when installed, may download an embedding model (read-only `GET` from `huggingface.co`, cacheable / offline-able via `HF_HUB_OFFLINE=1`) and feeds transcript excerpts to whatever LLM adapter you wire into its consolidation step. See that package's README for details.
|
|
135
|
+
|
|
98
136
|
## Packaging notes
|
|
99
137
|
|
|
100
138
|
- **Bundled**: all 14 workspaces are bundled into the published artifact via `tsup`. Consumers do not need to install workspace packages individually.
|
package/bin/vortex.mjs
ADDED
|
@@ -0,0 +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;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __export = (target, all) => {
|
|
3
|
+
for (var name in all)
|
|
4
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
// ../plugins/session-rituals/dist/catch-up.js
|
|
8
|
+
async function catchUpSessions(ctx, opts) {
|
|
9
|
+
const { sessionArchive } = await import("@vortex-os/memory-extended");
|
|
10
|
+
const dataDir = ctx.dataDir;
|
|
11
|
+
const cwd = opts?.cwd ?? ctx.repoRoot;
|
|
12
|
+
const adapters = opts?.adapters ?? [sessionArchive.claudeCodeAdapter];
|
|
13
|
+
const ingestResult = await sessionArchive.ingest({ adapters, dataDir, cwd, env: opts?.env });
|
|
14
|
+
const store = new sessionArchive.SessionArchiveStore(dataDir);
|
|
15
|
+
let indexedPulled = 0;
|
|
16
|
+
try {
|
|
17
|
+
indexedPulled = store.reindexFromNormalized().indexed;
|
|
18
|
+
} finally {
|
|
19
|
+
store.close();
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
ingestedLocal: ingestResult.sessionsIngested,
|
|
23
|
+
indexedPulled,
|
|
24
|
+
errors: ingestResult.errors.length
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export {
|
|
29
|
+
__export,
|
|
30
|
+
catchUpSessions
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=chunk-6SO4DAWJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../plugins/session-rituals/src/catch-up.ts"],"sourcesContent":["import type { ModuleContext } from \"@vortex-os/core\";\n// Type-only — erased at compile time, so importing it does NOT pull the\n// `@vortex-os/memory-extended` add-on (or its native sqlite/level deps) into\n// the module graph of consumers that only need the types. The runtime engine\n// is loaded lazily inside the function body via `await import(...)`.\nimport type { sessionArchive } from \"@vortex-os/memory-extended\";\n\n/**\n * Start-of-session \"catch-up\": fold conversation transcripts into the local\n * search archive without the user ever having to wrap up a session.\n *\n * Two sources, one pass:\n * - **local (a)** — this machine's own transcripts that are not archived yet,\n * read from the agent's transcript store and scoped to the current project.\n * - **pulled (b)** — transcripts created on another machine that arrived as\n * normalized text via git sync. Their text is present but this machine's\n * DB (local, derived, gitignored) has never indexed them.\n *\n * Text only — vectorization is deferred to recall/rebuild so session start\n * stays fast. The whole step is gated by `autoRecord.archive` at the call site\n * and is best-effort: callers should treat a thrown archive backend (e.g. the\n * native sqlite module not built) as \"skip\", never as a fatal start error.\n */\nexport interface CatchUpResult {\n /** Local transcripts newly archived this run (source a). */\n readonly ingestedLocal: number;\n /** Normalized transcripts from another machine newly indexed (source b). */\n readonly indexedPulled: number;\n /** Per-session ingest errors (source a). */\n readonly errors: number;\n}\n\nexport interface CatchUpOptions {\n /** Restrict local ingest to one project's transcripts. Default: `ctx.repoRoot`. */\n readonly cwd?: string;\n /**\n * Transcript adapters for local ingest. Default: Claude Code only. Other\n * hosts (Codex, Gemini) can be added by a caller; tests inject fakes so the\n * scan never touches the real home directory.\n */\n readonly adapters?: sessionArchive.IngestParams[\"adapters\"];\n /** Adapter environment override (e.g. a sandbox HOME). Tests use this. */\n readonly env?: sessionArchive.IngestParams[\"env\"];\n}\n\nexport async function catchUpSessions(\n ctx: ModuleContext,\n opts?: CatchUpOptions,\n): Promise<CatchUpResult> {\n // Lazy-load the optional add-on. Base ships without `memory-extended`; this\n // import resolves only when the add-on is installed alongside it. The call\n // site already gates this step on `autoRecord.archive` and treats a thrown\n // backend as \"skip\", so a missing add-on surfaces as a normal load error\n // the caller can catch.\n const { sessionArchive } = await import(\"@vortex-os/memory-extended\");\n\n const dataDir = ctx.dataDir;\n const cwd = opts?.cwd ?? ctx.repoRoot;\n const adapters = opts?.adapters ?? [sessionArchive.claudeCodeAdapter];\n\n // (a) Ingest this machine's not-yet-archived transcripts for the current\n // project. Writes the normalized copy into the archive (which git syncs) and\n // a local DB row. Text only — no vectorization here.\n const ingestResult = await sessionArchive.ingest({ adapters, dataDir, cwd, env: opts?.env });\n\n // (b) Index normalized transcripts that arrived from another machine via git\n // pull — their text is on disk but this machine's DB has no row yet.\n const store = new sessionArchive.SessionArchiveStore(dataDir);\n let indexedPulled = 0;\n try {\n indexedPulled = store.reindexFromNormalized().indexed;\n } finally {\n store.close();\n }\n\n return {\n ingestedLocal: ingestResult.sessionsIngested,\n indexedPulled,\n errors: ingestResult.errors.length,\n };\n}\n"],"mappings":";;;;;;;AA6CA,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,CAAC,eAAe,iBAAiB;AAKpE,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
|
@@ -138,7 +138,9 @@ declare function vortexConfigPath(ctx: ModuleContext): string;
|
|
|
138
138
|
/**
|
|
139
139
|
* Load the instance config, merged over defaults. A missing, unreadable, or
|
|
140
140
|
* invalid file yields defaults (everything on, no environments) rather than
|
|
141
|
-
* throwing — config is opt-in tuning, never a prerequisite.
|
|
141
|
+
* throwing — config is opt-in tuning, never a prerequisite. Environment rules
|
|
142
|
+
* are validated individually; malformed ones are dropped so that a partly bad
|
|
143
|
+
* config still resolves rather than throwing in `resolveEnvironment`.
|
|
142
144
|
*/
|
|
143
145
|
declare function loadVortexConfig(ctx: ModuleContext): VortexConfig;
|
|
144
146
|
/**
|
|
@@ -153,6 +155,67 @@ declare function resolveEnvironment(config: VortexConfig, signals: {
|
|
|
153
155
|
readonly pathExists?: (p: string) => boolean;
|
|
154
156
|
}): string | null;
|
|
155
157
|
|
|
158
|
+
/**
|
|
159
|
+
* Options for {@link validateDataRelativePath}. Shaped so a future
|
|
160
|
+
* symlink-aware mode can be added WITHOUT changing any caller: today every
|
|
161
|
+
* caller passes no options (or `{}`) and gets the lexical check. When the
|
|
162
|
+
* realpath mode lands it becomes `{ resolveSymlinks: true }` and callers that
|
|
163
|
+
* want it opt in; the default stays lexical-only.
|
|
164
|
+
*
|
|
165
|
+
* The symlink/realpath ancestor check is intentionally DEFERRED for v1 — the
|
|
166
|
+
* lexical containment check (resolve + `path.relative`) already blocks
|
|
167
|
+
* traversal, absolute, and drive-qualified paths. A symlink *inside* `data/`
|
|
168
|
+
* pointing outside it is the remaining gap; closing it needs an async
|
|
169
|
+
* `realpath` walk, which this synchronous API leaves room for.
|
|
170
|
+
*/
|
|
171
|
+
interface ValidateDataRelativePathOptions {
|
|
172
|
+
/**
|
|
173
|
+
* Reserved for the deferred realpath/symlink-ancestor mode. Currently
|
|
174
|
+
* ignored — accepted now so enabling it later is not a breaking change.
|
|
175
|
+
*/
|
|
176
|
+
readonly resolveSymlinks?: boolean;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Validate an untrusted `data/`-relative path and return the vetted absolute
|
|
180
|
+
* path under `dataDir`, or throw a clear {@link Error}.
|
|
181
|
+
*
|
|
182
|
+
* Rejection rules (in order — the cheap lexical checks run before the
|
|
183
|
+
* resolve so a hostile input never even reaches `path.resolve`):
|
|
184
|
+
*
|
|
185
|
+
* 1. Not a non-empty string.
|
|
186
|
+
* 2. Contains a control character (U+0000–U+001F).
|
|
187
|
+
* 3. After normalizing `\` → `/`: empty, `.`, drive-qualified (`C:`),
|
|
188
|
+
* absolute, or has a leading separator.
|
|
189
|
+
* 4. Any segment is empty (collapsed `//`), `.`, or `..` (traversal).
|
|
190
|
+
* 5. The final segment (the filename) is empty.
|
|
191
|
+
* 6. The first segment is a system/meta dir (worklog, decision-log,
|
|
192
|
+
* runbooks, hubs, _memory, _templates, _proactive-curator) or starts
|
|
193
|
+
* with `_` (any reserved/meta dir).
|
|
194
|
+
*
|
|
195
|
+
* Then it resolves against `dataDir` and confirms containment using
|
|
196
|
+
* `path.relative` (NOT a string prefix — `data` vs `data-evil` would fool a
|
|
197
|
+
* prefix check). On Windows the relative check is done case-insensitively.
|
|
198
|
+
*
|
|
199
|
+
* @param dataDir Absolute path of the instance's `data/` directory.
|
|
200
|
+
* @param rel Untrusted `data/`-relative path (LLM- or agent-supplied).
|
|
201
|
+
* @returns The validated absolute path, guaranteed under `dataDir`.
|
|
202
|
+
*/
|
|
203
|
+
declare function validateDataRelativePath(dataDir: string, rel: string, _options?: ValidateDataRelativePathOptions): string;
|
|
204
|
+
/**
|
|
205
|
+
* Create a file exclusively (refusing to overwrite). Writes `body` with the
|
|
206
|
+
* `wx` flag so an existing target throws `EEXIST`, which is re-thrown as a
|
|
207
|
+
* clear "refusing to overwrite" error. Use for the create-file action where
|
|
208
|
+
* clobbering an existing document would be silent data loss.
|
|
209
|
+
*
|
|
210
|
+
* The caller is responsible for ensuring the parent directory exists (the
|
|
211
|
+
* create-file path in the curator does its own `mkdir` after validation).
|
|
212
|
+
*
|
|
213
|
+
* @param absPath Absolute target path (already validated by
|
|
214
|
+
* {@link validateDataRelativePath}).
|
|
215
|
+
* @param body File contents (UTF-8).
|
|
216
|
+
*/
|
|
217
|
+
declare function exclusiveCreateFile(absPath: string, body: string): Promise<void>;
|
|
218
|
+
|
|
156
219
|
//# sourceMappingURL=index.d.ts.map
|
|
157
220
|
|
|
158
221
|
type index_d$d_AutoRecordConfig = AutoRecordConfig;
|
|
@@ -160,7 +223,9 @@ type index_d$d_EnvironmentRule = EnvironmentRule;
|
|
|
160
223
|
type index_d$d_FrontmatterDoc<T = Record<string, unknown>> = FrontmatterDoc<T>;
|
|
161
224
|
type index_d$d_ModuleContext = ModuleContext;
|
|
162
225
|
type index_d$d_Privacy = Privacy;
|
|
226
|
+
type index_d$d_ValidateDataRelativePathOptions = ValidateDataRelativePathOptions;
|
|
163
227
|
type index_d$d_VortexConfig = VortexConfig;
|
|
228
|
+
declare const index_d$d_exclusiveCreateFile: typeof exclusiveCreateFile;
|
|
164
229
|
declare const index_d$d_isVisibleAt: typeof isVisibleAt;
|
|
165
230
|
declare const index_d$d_loadVortexConfig: typeof loadVortexConfig;
|
|
166
231
|
declare const index_d$d_makeContext: typeof makeContext;
|
|
@@ -170,9 +235,10 @@ declare const index_d$d_normalizePrivacy: typeof normalizePrivacy;
|
|
|
170
235
|
declare const index_d$d_parseFrontmatter: typeof parseFrontmatter;
|
|
171
236
|
declare const index_d$d_resolveEnvironment: typeof resolveEnvironment;
|
|
172
237
|
declare const index_d$d_serializeFrontmatter: typeof serializeFrontmatter;
|
|
238
|
+
declare const index_d$d_validateDataRelativePath: typeof validateDataRelativePath;
|
|
173
239
|
declare const index_d$d_vortexConfigPath: typeof vortexConfigPath;
|
|
174
240
|
declare namespace index_d$d {
|
|
175
|
-
export { type index_d$d_AutoRecordConfig as AutoRecordConfig, type index_d$d_EnvironmentRule as EnvironmentRule, type index_d$d_FrontmatterDoc as FrontmatterDoc, type index_d$d_ModuleContext as ModuleContext, type index_d$d_Privacy as Privacy, type index_d$d_VortexConfig as VortexConfig, index_d$d_isVisibleAt as isVisibleAt, index_d$d_loadVortexConfig as loadVortexConfig, index_d$d_makeContext as makeContext, index_d$d_maxPrivacy as maxPrivacy, index_d$d_moduleDir as moduleDir, index_d$d_normalizePrivacy as normalizePrivacy, index_d$d_parseFrontmatter as parseFrontmatter, index_d$d_resolveEnvironment as resolveEnvironment, index_d$d_serializeFrontmatter as serializeFrontmatter, index_d$d_vortexConfigPath as vortexConfigPath };
|
|
241
|
+
export { type index_d$d_AutoRecordConfig as AutoRecordConfig, type index_d$d_EnvironmentRule as EnvironmentRule, type index_d$d_FrontmatterDoc as FrontmatterDoc, type index_d$d_ModuleContext as ModuleContext, type index_d$d_Privacy as Privacy, type index_d$d_ValidateDataRelativePathOptions as ValidateDataRelativePathOptions, type index_d$d_VortexConfig as VortexConfig, index_d$d_exclusiveCreateFile as exclusiveCreateFile, index_d$d_isVisibleAt as isVisibleAt, index_d$d_loadVortexConfig as loadVortexConfig, index_d$d_makeContext as makeContext, index_d$d_maxPrivacy as maxPrivacy, index_d$d_moduleDir as moduleDir, index_d$d_normalizePrivacy as normalizePrivacy, index_d$d_parseFrontmatter as parseFrontmatter, index_d$d_resolveEnvironment as resolveEnvironment, index_d$d_serializeFrontmatter as serializeFrontmatter, index_d$d_validateDataRelativePath as validateDataRelativePath, index_d$d_vortexConfigPath as vortexConfigPath };
|
|
176
242
|
}
|
|
177
243
|
|
|
178
244
|
/**
|
|
@@ -1684,6 +1750,59 @@ type FingerprintInput = {
|
|
|
1684
1750
|
*/
|
|
1685
1751
|
declare function computeFingerprint(input: FingerprintInput): string;
|
|
1686
1752
|
|
|
1753
|
+
/**
|
|
1754
|
+
* Hardened, deterministic write helper for the curate value loop.
|
|
1755
|
+
*
|
|
1756
|
+
* This is the single gate every document write goes through — the
|
|
1757
|
+
* insight-proposer's `onAccept` and the `vortex curate-accept` CLI subcommand
|
|
1758
|
+
* both call {@link writeDocAction}. It does NOT decide *whether* to write
|
|
1759
|
+
* (that is the user's accept) and it does NOT consult an LLM. It takes a
|
|
1760
|
+
* concrete document action and either creates a new file (exclusive — refuses
|
|
1761
|
+
* to overwrite) or appends a section to an EXISTING markdown file.
|
|
1762
|
+
*
|
|
1763
|
+
* Path safety is enforced first, for BOTH actions, via
|
|
1764
|
+
* {@link validateDataRelativePath} from `@vortex-os/core`. A path that escapes
|
|
1765
|
+
* `data/`, is absolute/drive-qualified, or targets a system/meta directory is
|
|
1766
|
+
* rejected before any filesystem access — closing the path-traversal gap that
|
|
1767
|
+
* was previously only guarded by the insight-proposer's system-meta string
|
|
1768
|
+
* check.
|
|
1769
|
+
*
|
|
1770
|
+
* v1 scope (consensus): create-file + append-section only. No update-file
|
|
1771
|
+
* (whole-file replace = data loss) and no create-folder distinct path
|
|
1772
|
+
* (create-file's mkdir covers the new-folder case).
|
|
1773
|
+
*/
|
|
1774
|
+
/** A document write the user has accepted. Path is `data/`-relative. */
|
|
1775
|
+
type DocWriteAction = {
|
|
1776
|
+
readonly kind: "create-file";
|
|
1777
|
+
/** `data/`-relative path of the file to create (validated here). */
|
|
1778
|
+
readonly targetRelPath: string;
|
|
1779
|
+
readonly body: string;
|
|
1780
|
+
} | {
|
|
1781
|
+
readonly kind: "append-section";
|
|
1782
|
+
/** `data/`-relative path of an EXISTING file to append to (validated here). */
|
|
1783
|
+
readonly targetRelPath: string;
|
|
1784
|
+
readonly sectionHeader: string;
|
|
1785
|
+
readonly body: string;
|
|
1786
|
+
};
|
|
1787
|
+
interface WriteDocResult {
|
|
1788
|
+
/** Absolute path written. */
|
|
1789
|
+
readonly writtenPath: string;
|
|
1790
|
+
readonly kind: DocWriteAction["kind"];
|
|
1791
|
+
}
|
|
1792
|
+
/**
|
|
1793
|
+
* Apply a document write action against `<cwd>/data`, with path validation and
|
|
1794
|
+
* exclusive-create / append-to-existing semantics.
|
|
1795
|
+
*
|
|
1796
|
+
* - `create-file`: validate the path, `mkdir -p` the parent, then write with
|
|
1797
|
+
* {@link exclusiveCreateFile} (throws "refusing to overwrite" if it exists).
|
|
1798
|
+
* - `append-section`: validate the path, REQUIRE the file to already exist
|
|
1799
|
+
* (append-section never creates), then append a `## <sectionHeader>` block.
|
|
1800
|
+
*
|
|
1801
|
+
* @throws if the path is unsafe, if create-file's target exists, or if
|
|
1802
|
+
* append-section's target does not exist.
|
|
1803
|
+
*/
|
|
1804
|
+
declare function writeDocAction(cwd: string, action: DocWriteAction): Promise<WriteDocResult>;
|
|
1805
|
+
|
|
1687
1806
|
type ProposalKind = "capture-insight" | "create-hub";
|
|
1688
1807
|
interface DeclinedEntry {
|
|
1689
1808
|
/** ISO-8601 timestamp of when the user declined. */
|
|
@@ -2209,6 +2328,7 @@ declare const index_d$1_CodexLLMJudge: typeof CodexLLMJudge;
|
|
|
2209
2328
|
type index_d$1_CodexLLMJudgeError = CodexLLMJudgeError;
|
|
2210
2329
|
declare const index_d$1_CodexLLMJudgeError: typeof CodexLLMJudgeError;
|
|
2211
2330
|
type index_d$1_DeclinedEntry = DeclinedEntry;
|
|
2331
|
+
type index_d$1_DocWriteAction = DocWriteAction;
|
|
2212
2332
|
type index_d$1_ExpectedShape = ExpectedShape;
|
|
2213
2333
|
type index_d$1_FingerprintInput = FingerprintInput;
|
|
2214
2334
|
type index_d$1_GeminiLLMJudge = GeminiLLMJudge;
|
|
@@ -2243,6 +2363,7 @@ type index_d$1_TopicTreeSnapshot = TopicTreeSnapshot;
|
|
|
2243
2363
|
type index_d$1_TurnBuffer = TurnBuffer;
|
|
2244
2364
|
declare const index_d$1_TurnBuffer: typeof TurnBuffer;
|
|
2245
2365
|
type index_d$1_TurnRecord = TurnRecord;
|
|
2366
|
+
type index_d$1_WriteDocResult = WriteDocResult;
|
|
2246
2367
|
declare const index_d$1_computeFingerprint: typeof computeFingerprint;
|
|
2247
2368
|
declare const index_d$1_deriveQueryFromTurns: typeof deriveQueryFromTurns;
|
|
2248
2369
|
declare const index_d$1_frameForJudge: typeof frameForJudge;
|
|
@@ -2251,8 +2372,9 @@ declare const index_d$1_parseJudgeResponse: typeof parseJudgeResponse;
|
|
|
2251
2372
|
declare const index_d$1_recordAcceptance: typeof recordAcceptance;
|
|
2252
2373
|
declare const index_d$1_recordDecline: typeof recordDecline;
|
|
2253
2374
|
declare const index_d$1_resetDeclined: typeof resetDeclined;
|
|
2375
|
+
declare const index_d$1_writeDocAction: typeof writeDocAction;
|
|
2254
2376
|
declare namespace index_d$1 {
|
|
2255
|
-
export { type index_d$1_AcceptResult as AcceptResult, index_d$1_AmbientBackpressure as AmbientBackpressure, type index_d$1_AmbientRecallHit as AmbientRecallHit, type index_d$1_AmbientRecallResult as AmbientRecallResult, index_d$1_AmbientRecaller as AmbientRecaller, type index_d$1_AmbientRecallerOptions as AmbientRecallerOptions, index_d$1_ClaudeCodeLLMJudge as ClaudeCodeLLMJudge, index_d$1_ClaudeCodeLLMJudgeError as ClaudeCodeLLMJudgeError, type index_d$1_ClaudeCodeSubAgentInvoker as ClaudeCodeSubAgentInvoker, type index_d$1_ClaudeDesktopInvoker as ClaudeDesktopInvoker, index_d$1_ClaudeDesktopLLMJudge as ClaudeDesktopLLMJudge, index_d$1_ClaudeDesktopLLMJudgeError as ClaudeDesktopLLMJudgeError, type index_d$1_CodexCompletionInvoker as CodexCompletionInvoker, index_d$1_CodexLLMJudge as CodexLLMJudge, index_d$1_CodexLLMJudgeError as CodexLLMJudgeError, type index_d$1_DeclinedEntry as DeclinedEntry, type index_d$1_ExpectedShape as ExpectedShape, type index_d$1_FingerprintInput as FingerprintInput, index_d$1_GeminiLLMJudge as GeminiLLMJudge, index_d$1_GeminiLLMJudgeError as GeminiLLMJudgeError, type index_d$1_GeminiMcpInvoker as GeminiMcpInvoker, type index_d$1_HubInput as HubInput, type index_d$1_HubProposal as HubProposal, index_d$1_HubProposer as HubProposer, type index_d$1_HubProposerOptions as HubProposerOptions, type index_d$1_InjectedInvoker as InjectedInvoker, index_d$1_InjectedLLMJudge as InjectedLLMJudge, type index_d$1_InsightInput as InsightInput, type index_d$1_InsightProposal as InsightProposal, index_d$1_InsightProposer as InsightProposer, type index_d$1_InsightProposerOptions as InsightProposerOptions, type index_d$1_LLMJudge as LLMJudge, index_d$1_LLMJudgeError as LLMJudgeError, type index_d$1_Proposal as Proposal, type index_d$1_ProposalAction as ProposalAction, type index_d$1_ProposalKind as ProposalKind, type index_d$1_Proposer as Proposer, type index_d$1_ProposerContext as ProposerContext, type index_d$1_RecallFn as RecallFn, type index_d$1_RecallSuggestion as RecallSuggestion, type index_d$1_TopicTreeSnapshot as TopicTreeSnapshot, index_d$1_TurnBuffer as TurnBuffer, type index_d$1_TurnRecord as TurnRecord, index_d$1_computeFingerprint as computeFingerprint, index_d$1_deriveQueryFromTurns as deriveQueryFromTurns, index_d$1_frameForJudge as frameForJudge, index_d$1_loadDeclinedFingerprints as loadDeclinedFingerprints, index_d$1_parseJudgeResponse as parseJudgeResponse, index_d$1_recordAcceptance as recordAcceptance, index_d$1_recordDecline as recordDecline, index_d$1_resetDeclined as resetDeclined };
|
|
2377
|
+
export { type index_d$1_AcceptResult as AcceptResult, index_d$1_AmbientBackpressure as AmbientBackpressure, type index_d$1_AmbientRecallHit as AmbientRecallHit, type index_d$1_AmbientRecallResult as AmbientRecallResult, index_d$1_AmbientRecaller as AmbientRecaller, type index_d$1_AmbientRecallerOptions as AmbientRecallerOptions, index_d$1_ClaudeCodeLLMJudge as ClaudeCodeLLMJudge, index_d$1_ClaudeCodeLLMJudgeError as ClaudeCodeLLMJudgeError, type index_d$1_ClaudeCodeSubAgentInvoker as ClaudeCodeSubAgentInvoker, type index_d$1_ClaudeDesktopInvoker as ClaudeDesktopInvoker, index_d$1_ClaudeDesktopLLMJudge as ClaudeDesktopLLMJudge, index_d$1_ClaudeDesktopLLMJudgeError as ClaudeDesktopLLMJudgeError, type index_d$1_CodexCompletionInvoker as CodexCompletionInvoker, index_d$1_CodexLLMJudge as CodexLLMJudge, index_d$1_CodexLLMJudgeError as CodexLLMJudgeError, type index_d$1_DeclinedEntry as DeclinedEntry, type index_d$1_DocWriteAction as DocWriteAction, type index_d$1_ExpectedShape as ExpectedShape, type index_d$1_FingerprintInput as FingerprintInput, index_d$1_GeminiLLMJudge as GeminiLLMJudge, index_d$1_GeminiLLMJudgeError as GeminiLLMJudgeError, type index_d$1_GeminiMcpInvoker as GeminiMcpInvoker, type index_d$1_HubInput as HubInput, type index_d$1_HubProposal as HubProposal, index_d$1_HubProposer as HubProposer, type index_d$1_HubProposerOptions as HubProposerOptions, type index_d$1_InjectedInvoker as InjectedInvoker, index_d$1_InjectedLLMJudge as InjectedLLMJudge, type index_d$1_InsightInput as InsightInput, type index_d$1_InsightProposal as InsightProposal, index_d$1_InsightProposer as InsightProposer, type index_d$1_InsightProposerOptions as InsightProposerOptions, type index_d$1_LLMJudge as LLMJudge, index_d$1_LLMJudgeError as LLMJudgeError, type index_d$1_Proposal as Proposal, type index_d$1_ProposalAction as ProposalAction, type index_d$1_ProposalKind as ProposalKind, type index_d$1_Proposer as Proposer, type index_d$1_ProposerContext as ProposerContext, type index_d$1_RecallFn as RecallFn, type index_d$1_RecallSuggestion as RecallSuggestion, type index_d$1_TopicTreeSnapshot as TopicTreeSnapshot, index_d$1_TurnBuffer as TurnBuffer, type index_d$1_TurnRecord as TurnRecord, type index_d$1_WriteDocResult as WriteDocResult, index_d$1_computeFingerprint as computeFingerprint, index_d$1_deriveQueryFromTurns as deriveQueryFromTurns, index_d$1_frameForJudge as frameForJudge, index_d$1_loadDeclinedFingerprints as loadDeclinedFingerprints, index_d$1_parseJudgeResponse as parseJudgeResponse, index_d$1_recordAcceptance as recordAcceptance, index_d$1_recordDecline as recordDecline, index_d$1_resetDeclined as resetDeclined, index_d$1_writeDocAction as writeDocAction };
|
|
2256
2378
|
}
|
|
2257
2379
|
|
|
2258
2380
|
/**
|
|
@@ -2369,6 +2491,172 @@ interface RitualRegistryOptions {
|
|
|
2369
2491
|
*/
|
|
2370
2492
|
declare function createRitualRegistry(options?: RitualRegistryOptions): CommandRegistry;
|
|
2371
2493
|
|
|
2494
|
+
interface CliIo {
|
|
2495
|
+
/** Write a chunk to stdout. Default: `process.stdout.write`. */
|
|
2496
|
+
readonly stdout?: (s: string) => void;
|
|
2497
|
+
/** Write a chunk to stderr. Default: `process.stderr.write`. */
|
|
2498
|
+
readonly stderr?: (s: string) => void;
|
|
2499
|
+
}
|
|
2500
|
+
/**
|
|
2501
|
+
* Build the ritual registry, lighting up `/recall` ONLY when the optional
|
|
2502
|
+
* `@vortex-os/memory-extended` add-on is installed alongside base.
|
|
2503
|
+
*
|
|
2504
|
+
* Base ships without the add-on (it is `external` in the tsup bundle), so this
|
|
2505
|
+
* probe is a real `await import` that throws `ERR_MODULE_NOT_FOUND` on a lean
|
|
2506
|
+
* install — caught here so the CLI runs with base alone and never throws on
|
|
2507
|
+
* startup. When the add-on IS present, its local embedder wires up `/recall`.
|
|
2508
|
+
* `curate` is intentionally NOT wired here — it is agent-mediated.
|
|
2509
|
+
*/
|
|
2510
|
+
declare function buildRegistry(): Promise<CommandRegistry>;
|
|
2511
|
+
/** Resolve the repo root the same way every entry point should: env override, else cwd. */
|
|
2512
|
+
declare function resolveRepoRoot(): string;
|
|
2513
|
+
/**
|
|
2514
|
+
* Run the `vortex` CLI for the given argv (already sliced past `node script`).
|
|
2515
|
+
* Returns the process exit code (0 success, 1 on error) instead of calling
|
|
2516
|
+
* `process.exit`, so callers/tests stay in control.
|
|
2517
|
+
*/
|
|
2518
|
+
declare function runVortexCli(argv: readonly string[], io?: CliIo): Promise<number>;
|
|
2519
|
+
|
|
2520
|
+
/** The two document actions the v1 value loop supports. */
|
|
2521
|
+
type CurateActionKind = "create-file" | "append-section";
|
|
2522
|
+
/**
|
|
2523
|
+
* Serializable accepted-proposal payload — the contract between the agent and
|
|
2524
|
+
* the deterministic CLI. The agent builds it (after the user says yes); the
|
|
2525
|
+
* accept/preview path validates and acts on it. Plain data only so it can
|
|
2526
|
+
* round-trip through a CLI argument or a file.
|
|
2527
|
+
*
|
|
2528
|
+
* - `create-file`: needs `filename` (the new file's basename); `targetRelPath`
|
|
2529
|
+
* is the `data/`-relative FOLDER it goes in. `sectionHeader` is unused.
|
|
2530
|
+
* - `append-section`: `targetRelPath` is the `data/`-relative path of the
|
|
2531
|
+
* EXISTING file; `sectionHeader` is the `## ` heading to add. `filename`
|
|
2532
|
+
* is unused.
|
|
2533
|
+
*
|
|
2534
|
+
* `fingerprint` is the COARSE decline key (see {@link computeCurateFingerprint})
|
|
2535
|
+
* — the agent may omit it (the CLI recomputes), but if present it must match.
|
|
2536
|
+
*/
|
|
2537
|
+
interface CuratePayload {
|
|
2538
|
+
readonly action: CurateActionKind;
|
|
2539
|
+
/** Short topic slug (1-3 words). Part of the coarse fingerprint. */
|
|
2540
|
+
readonly topic: string;
|
|
2541
|
+
/**
|
|
2542
|
+
* `data/`-relative path. For create-file this is the destination FOLDER; for
|
|
2543
|
+
* append-section this is the existing FILE. Part of the coarse fingerprint.
|
|
2544
|
+
*/
|
|
2545
|
+
readonly targetRelPath: string;
|
|
2546
|
+
/** create-file only: basename of the file to create (e.g. `notes.md`). */
|
|
2547
|
+
readonly filename?: string;
|
|
2548
|
+
/** append-section only: section heading without the leading `## `. */
|
|
2549
|
+
readonly sectionHeader?: string;
|
|
2550
|
+
/** Document body to write (create-file) or section body (append-section). */
|
|
2551
|
+
readonly body: string;
|
|
2552
|
+
/** Optional coarse fingerprint; recomputed + checked if present. */
|
|
2553
|
+
readonly fingerprint?: string;
|
|
2554
|
+
}
|
|
2555
|
+
interface CuratePayloadValidation {
|
|
2556
|
+
readonly ok: boolean;
|
|
2557
|
+
readonly errors: readonly string[];
|
|
2558
|
+
/** The concrete `data/`-relative file path the action would touch. */
|
|
2559
|
+
readonly effectiveRelPath?: string;
|
|
2560
|
+
/** The recomputed coarse fingerprint. */
|
|
2561
|
+
readonly fingerprint?: string;
|
|
2562
|
+
}
|
|
2563
|
+
/**
|
|
2564
|
+
* Coarse decline fingerprint — `sha256(topic + "\n" + actionKind + "\n" +
|
|
2565
|
+
* targetRelPath)`, truncated to 16 hex chars. INTENTIONALLY coarse: it does
|
|
2566
|
+
* NOT include the body or the section header, so a re-proposal of the same
|
|
2567
|
+
* topic+action+target is recognized as the same proposal even if the wording
|
|
2568
|
+
* changed. Used identically by accept-record, decline, and the
|
|
2569
|
+
* previously-declined check, so a decline actually suppresses re-proposals.
|
|
2570
|
+
*
|
|
2571
|
+
* `targetRelPath` is normalized to forward slashes so work/home machines agree.
|
|
2572
|
+
*/
|
|
2573
|
+
declare function computeCurateFingerprint(topic: string, actionKind: CurateActionKind, targetRelPath: string): string;
|
|
2574
|
+
/**
|
|
2575
|
+
* Validate a payload at the CLI boundary (shape + light path sanity). Deeper
|
|
2576
|
+
* path safety (traversal/absolute/drive) is enforced authoritatively by
|
|
2577
|
+
* {@link writeDocAction} → `validateDataRelativePath` at write time; this layer
|
|
2578
|
+
* gives the agent a clear, early, write-nothing report and computes the coarse
|
|
2579
|
+
* fingerprint + effective file path.
|
|
2580
|
+
*/
|
|
2581
|
+
declare function validateCuratePayload(payload: CuratePayload): CuratePayloadValidation;
|
|
2582
|
+
interface CurateCandidate {
|
|
2583
|
+
/** `data/`-relative path of an existing document. */
|
|
2584
|
+
readonly relpath: string;
|
|
2585
|
+
/** Frontmatter `topic`, case-folded (lowercased) for matching; or null. */
|
|
2586
|
+
readonly topic: string | null;
|
|
2587
|
+
/** Frontmatter `tags`, case-folded. */
|
|
2588
|
+
readonly tags: readonly string[];
|
|
2589
|
+
}
|
|
2590
|
+
interface CurateCandidatesResult {
|
|
2591
|
+
readonly subcommand: "curate-candidates";
|
|
2592
|
+
readonly status: "ok";
|
|
2593
|
+
readonly candidates: readonly CurateCandidate[];
|
|
2594
|
+
/** True when the scan was capped by `maxEntries`. */
|
|
2595
|
+
readonly truncated: boolean;
|
|
2596
|
+
readonly nextActions: readonly string[];
|
|
2597
|
+
}
|
|
2598
|
+
interface CuratePreviewResult {
|
|
2599
|
+
readonly subcommand: "curate-preview";
|
|
2600
|
+
readonly status: "ok" | "invalid";
|
|
2601
|
+
readonly action?: CurateActionKind;
|
|
2602
|
+
readonly effectiveRelPath?: string;
|
|
2603
|
+
readonly fingerprint?: string;
|
|
2604
|
+
/** What would happen if accepted, in plain words. */
|
|
2605
|
+
readonly wouldDo?: string;
|
|
2606
|
+
/** True when this exact proposal was previously declined and not expired. */
|
|
2607
|
+
readonly previouslyDeclined: boolean;
|
|
2608
|
+
/** create-file: does the target already exist (accept would refuse)? */
|
|
2609
|
+
readonly targetExists?: boolean;
|
|
2610
|
+
readonly errors: readonly string[];
|
|
2611
|
+
readonly nextActions: readonly string[];
|
|
2612
|
+
}
|
|
2613
|
+
interface CurateAcceptResult {
|
|
2614
|
+
readonly subcommand: "curate-accept";
|
|
2615
|
+
readonly status: "written" | "refused" | "invalid";
|
|
2616
|
+
readonly action?: CurateActionKind;
|
|
2617
|
+
readonly writtenPath?: string;
|
|
2618
|
+
readonly fingerprint?: string;
|
|
2619
|
+
readonly errors: readonly string[];
|
|
2620
|
+
readonly nextActions: readonly string[];
|
|
2621
|
+
}
|
|
2622
|
+
interface CurateDeclineResult {
|
|
2623
|
+
readonly subcommand: "curate-decline";
|
|
2624
|
+
readonly status: "recorded" | "invalid";
|
|
2625
|
+
readonly fingerprint?: string;
|
|
2626
|
+
readonly errors: readonly string[];
|
|
2627
|
+
readonly nextActions: readonly string[];
|
|
2628
|
+
}
|
|
2629
|
+
/**
|
|
2630
|
+
* List existing user documents under `data/` the agent can choose to append
|
|
2631
|
+
* to (vs creating a new file). Walks `data/`, skipping reserved system/meta
|
|
2632
|
+
* directories and non-document files. Returns relpath + case-folded
|
|
2633
|
+
* frontmatter topic + tags so the agent can match the current work's topic to
|
|
2634
|
+
* an existing home without an LLM call.
|
|
2635
|
+
*/
|
|
2636
|
+
declare function runCurateCandidates(repoRoot: string, options?: {
|
|
2637
|
+
readonly maxEntries?: number;
|
|
2638
|
+
}): Promise<CurateCandidatesResult>;
|
|
2639
|
+
/**
|
|
2640
|
+
* Validate a payload and report what WOULD happen — writes nothing. Reports
|
|
2641
|
+
* the previously-declined state (coarse fingerprint, un-expired) so the agent
|
|
2642
|
+
* can suppress a re-proposal, and whether a create-file target already exists
|
|
2643
|
+
* (accept would refuse to overwrite).
|
|
2644
|
+
*/
|
|
2645
|
+
declare function runCuratePreview(repoRoot: string, payload: CuratePayload, now?: Date): Promise<CuratePreviewResult>;
|
|
2646
|
+
/**
|
|
2647
|
+
* Write an accepted proposal through the hardened shared gate, then record the
|
|
2648
|
+
* acceptance in the decline-store audit trail. Requires a valid payload — the
|
|
2649
|
+
* write path is never reachable without an explicit accepted-proposal payload.
|
|
2650
|
+
*/
|
|
2651
|
+
declare function runCurateAccept(repoRoot: string, payload: CuratePayload, now?: Date): Promise<CurateAcceptResult>;
|
|
2652
|
+
/**
|
|
2653
|
+
* Record a decline against the COARSE fingerprint so the same topic+action+
|
|
2654
|
+
* target is suppressed for the expiry window (30 days via decline-store). Body
|
|
2655
|
+
* and sectionHeader are not part of the fingerprint, so a re-worded proposal
|
|
2656
|
+
* of the same capture stays suppressed.
|
|
2657
|
+
*/
|
|
2658
|
+
declare function runCurateDecline(repoRoot: string, payload: CuratePayload, now?: Date): Promise<CurateDeclineResult>;
|
|
2659
|
+
|
|
2372
2660
|
/**
|
|
2373
2661
|
* Bridge the `@vortex-os/memory-extended` recall engine into a
|
|
2374
2662
|
* `@vortex-os/proactive-curator` {@link AmbientRecaller} — defined in the
|
|
@@ -2561,8 +2849,8 @@ declare function catchUpSessions(ctx: ModuleContext, opts?: CatchUpOptions): Pro
|
|
|
2561
2849
|
* file read/write around them. Keeping them pure makes the merge unit-testable
|
|
2562
2850
|
* and the "writes only what's missing" guarantee verifiable.
|
|
2563
2851
|
*/
|
|
2564
|
-
declare const SESSION_START_COMMAND = "
|
|
2565
|
-
declare const SESSION_END_COMMAND = "
|
|
2852
|
+
declare const SESSION_START_COMMAND = "npx --no-install -p @vortex-os/base vortex session-start";
|
|
2853
|
+
declare const SESSION_END_COMMAND = "npx --no-install -p @vortex-os/base vortex session-end";
|
|
2566
2854
|
interface HookCommand {
|
|
2567
2855
|
readonly type: "command";
|
|
2568
2856
|
readonly command: string;
|
|
@@ -2854,6 +3142,8 @@ interface VortexImportResult {
|
|
|
2854
3142
|
readonly frontmatterPreserved: number;
|
|
2855
3143
|
readonly systemDirsCreated: readonly string[];
|
|
2856
3144
|
readonly skipped: number;
|
|
3145
|
+
readonly collisions: number;
|
|
3146
|
+
readonly collidedFiles: readonly string[];
|
|
2857
3147
|
readonly links?: {
|
|
2858
3148
|
readonly filesScanned: number;
|
|
2859
3149
|
readonly total: number;
|
|
@@ -2914,9 +3204,18 @@ type index_d_AmbientRecallFactoryOptions = AmbientRecallFactoryOptions;
|
|
|
2914
3204
|
type index_d_CatchUpOptions = CatchUpOptions;
|
|
2915
3205
|
type index_d_CatchUpResult = CatchUpResult;
|
|
2916
3206
|
type index_d_ClaudeSettings = ClaudeSettings;
|
|
3207
|
+
type index_d_CliIo = CliIo;
|
|
2917
3208
|
type index_d_CollectAgendaOptions = CollectAgendaOptions;
|
|
3209
|
+
type index_d_CurateAcceptResult = CurateAcceptResult;
|
|
3210
|
+
type index_d_CurateActionKind = CurateActionKind;
|
|
2918
3211
|
type index_d_CurateAnyProposal = CurateAnyProposal;
|
|
3212
|
+
type index_d_CurateCandidate = CurateCandidate;
|
|
3213
|
+
type index_d_CurateCandidatesResult = CurateCandidatesResult;
|
|
3214
|
+
type index_d_CurateDeclineResult = CurateDeclineResult;
|
|
2919
3215
|
type index_d_CurateOptions = CurateOptions;
|
|
3216
|
+
type index_d_CuratePayload = CuratePayload;
|
|
3217
|
+
type index_d_CuratePayloadValidation = CuratePayloadValidation;
|
|
3218
|
+
type index_d_CuratePreviewResult = CuratePreviewResult;
|
|
2920
3219
|
type index_d_CurateResult = CurateResult;
|
|
2921
3220
|
type index_d_EnsureHooksResult = EnsureHooksResult;
|
|
2922
3221
|
type index_d_EnsureWorklogResult = EnsureWorklogResult;
|
|
@@ -2942,9 +3241,11 @@ type index_d_VortexSyncStepId = VortexSyncStepId;
|
|
|
2942
3241
|
type index_d_VortexSyncStepStatus = VortexSyncStepStatus;
|
|
2943
3242
|
type index_d_WorklogAppendResult = WorklogAppendResult;
|
|
2944
3243
|
declare const index_d_agendaCommand: typeof agendaCommand;
|
|
3244
|
+
declare const index_d_buildRegistry: typeof buildRegistry;
|
|
2945
3245
|
declare const index_d_catchUpSessions: typeof catchUpSessions;
|
|
2946
3246
|
declare const index_d_collectAgenda: typeof collectAgenda;
|
|
2947
3247
|
declare const index_d_collectSessionStartReport: typeof collectSessionStartReport;
|
|
3248
|
+
declare const index_d_computeCurateFingerprint: typeof computeCurateFingerprint;
|
|
2948
3249
|
declare const index_d_createAmbientRecaller: typeof createAmbientRecaller;
|
|
2949
3250
|
declare const index_d_createRitualRegistry: typeof createRitualRegistry;
|
|
2950
3251
|
declare const index_d_curateCommand: typeof curateCommand;
|
|
@@ -2960,11 +3261,18 @@ declare const index_d_recallCommand: typeof recallCommand;
|
|
|
2960
3261
|
declare const index_d_reindexCommand: typeof reindexCommand;
|
|
2961
3262
|
declare const index_d_renderAgenda: typeof renderAgenda;
|
|
2962
3263
|
declare const index_d_renderSessionStartReport: typeof renderSessionStartReport;
|
|
3264
|
+
declare const index_d_resolveRepoRoot: typeof resolveRepoRoot;
|
|
3265
|
+
declare const index_d_runCurateAccept: typeof runCurateAccept;
|
|
3266
|
+
declare const index_d_runCurateCandidates: typeof runCurateCandidates;
|
|
3267
|
+
declare const index_d_runCurateDecline: typeof runCurateDecline;
|
|
3268
|
+
declare const index_d_runCuratePreview: typeof runCuratePreview;
|
|
3269
|
+
declare const index_d_runVortexCli: typeof runVortexCli;
|
|
2963
3270
|
declare const index_d_serializeSettings: typeof serializeSettings;
|
|
2964
3271
|
declare const index_d_sessionStartCommand: typeof sessionStartCommand;
|
|
3272
|
+
declare const index_d_validateCuratePayload: typeof validateCuratePayload;
|
|
2965
3273
|
declare const index_d_vortexCommand: typeof vortexCommand;
|
|
2966
3274
|
declare namespace index_d {
|
|
2967
|
-
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_CollectAgendaOptions as CollectAgendaOptions, type index_d_CurateAnyProposal as CurateAnyProposal, type index_d_CurateOptions as CurateOptions, 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, type index_d_OpenDecision as OpenDecision, type index_d_OpenTask as OpenTask, 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_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_WorklogAppendResult as WorklogAppendResult, index_d_agendaCommand as agendaCommand, index_d_catchUpSessions as catchUpSessions, index_d_collectAgenda as collectAgenda, index_d_collectSessionStartReport as collectSessionStartReport, index_d_createAmbientRecaller as createAmbientRecaller, index_d_createRitualRegistry as createRitualRegistry, index_d_curateCommand as curateCommand, index_d_decisionCommand as decisionCommand, 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_logCommand as logCommand, index_d_parseSettings as parseSettings, index_d_recallCommand as recallCommand, index_d_reindexCommand as reindexCommand, index_d_renderAgenda as renderAgenda, index_d_renderSessionStartReport as renderSessionStartReport, index_d_serializeSettings as serializeSettings, index_d_sessionStartCommand as sessionStartCommand, index_d_vortexCommand as vortexCommand };
|
|
3275
|
+
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, type index_d_OpenDecision as OpenDecision, type index_d_OpenTask as OpenTask, 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_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_WorklogAppendResult as WorklogAppendResult, index_d_agendaCommand as agendaCommand, index_d_buildRegistry as buildRegistry, index_d_catchUpSessions as catchUpSessions, index_d_collectAgenda as collectAgenda, index_d_collectSessionStartReport as collectSessionStartReport, index_d_computeCurateFingerprint as computeCurateFingerprint, index_d_createAmbientRecaller as createAmbientRecaller, index_d_createRitualRegistry as createRitualRegistry, index_d_curateCommand as curateCommand, index_d_decisionCommand as decisionCommand, 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_logCommand as logCommand, index_d_parseSettings as parseSettings, index_d_recallCommand as recallCommand, index_d_reindexCommand as reindexCommand, index_d_renderAgenda as renderAgenda, index_d_renderSessionStartReport as renderSessionStartReport, 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_runVortexCli as runVortexCli, index_d_serializeSettings as serializeSettings, index_d_sessionStartCommand as sessionStartCommand, index_d_validateCuratePayload as validateCuratePayload, index_d_vortexCommand as vortexCommand };
|
|
2968
3276
|
}
|
|
2969
3277
|
|
|
2970
3278
|
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 };
|
package/dist/index.js
CHANGED
|
Binary file
|