@aui.io/apollo 0.1.52 → 0.1.54

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 CHANGED
@@ -89,8 +89,8 @@ thread create | list | get | messages | trace
89
89
  mockdb provision | status | describe | export | keys | wire | delete --force
90
90
  | collections … | seed | endpoint … | execute | session … | rotate …
91
91
  vault set <NAME> | list | get <NAME> | rm <NAME> --force
92
- kb list | status <name> | check | add <hub> <files…> | add-url <hub> <urls…>
93
- | delete <name> --force
92
+ kb list | status <name> | check | create <name> | add <hub> <files…>
93
+ | add-url <hub> <urls…> | export <hub> | export --all | delete <name> --force
94
94
  ```
95
95
 
96
96
  Run `apollo <command> --help` for the live flag list on your installed version.
@@ -1,5 +1,5 @@
1
1
  import { ValidationError } from "@aui.io/apollo-core/errors/index.js";
2
- import { addFiles, addUrls, createHub, deleteHub, getHubByName, hubRefCheck, hubStatus, listHubs, programHubRefs, } from "@aui.io/apollo-core/services/knowledge.js";
2
+ import { addFiles, addUrls, createHub, defaultExportRoot, deleteHub, describeHubExport, exportHubs, getHubByName, hubRefCheck, hubStatus, KNOWLEDGE_DATA_DIR, listHubs, programHubRefs, } from "@aui.io/apollo-core/services/knowledge.js";
3
3
  function hubLine(hub) {
4
4
  return `${hub.name.padEnd(32)} ${hub.id}`;
5
5
  }
@@ -17,6 +17,27 @@ function uploadLines(result) {
17
17
  `Indexing is asynchronous — \`apollo kb status ${result.hub.name}\` shows the outcome.`,
18
18
  ].join("\n");
19
19
  }
20
+ /**
21
+ * Export summary: one line per hub, then per-file failures, then where it
22
+ * all landed. Says "indexed" on purpose — the export is what KBM finished
23
+ * indexing, so anything still processing (or failed) is absent by design.
24
+ */
25
+ function exportLines(result) {
26
+ if (result.hubs.length === 0)
27
+ return "No knowledge hubs for this agent.";
28
+ const lines = result.hubs.map((hub) => describeHubExport(hub, result.destination));
29
+ for (const hub of result.hubs) {
30
+ for (const failure of hub.failures) {
31
+ lines.push(` ✕ ${hub.hub.name}/${failure.title}: ${failure.error}`);
32
+ }
33
+ }
34
+ if (result.unlisted.length > 0) {
35
+ lines.push(`not exported (visible to the scope but not owned by this agent): ${result.unlisted.join(", ")}`);
36
+ }
37
+ const count = result.hubs.length === 1 ? "1 hub" : `${result.hubs.length} hubs`;
38
+ lines.push(`Exported ${count} to ${result.destination} — indexed content only; \`apollo kb status <name>\` shows pending or failed jobs.`);
39
+ return lines.join("\n");
40
+ }
20
41
  export function registerKb(program, runtime) {
21
42
  const kb = program
22
43
  .command("kb")
@@ -106,6 +127,18 @@ export function registerKb(program, runtime) {
106
127
  return lines.join("\n");
107
128
  });
108
129
  });
130
+ kb.command("export [name]")
131
+ .description(`Download a hub's indexed content and original files into ${KNOWLEDGE_DATA_DIR}/<hub>/ — a sibling of bundle/, never part of push`)
132
+ .option("--all", "export every hub of the agent")
133
+ .action(async (name, options) => {
134
+ const run = runtime();
135
+ const result = await exportHubs(run.context, {
136
+ ...(name === undefined ? {} : { hub: name }),
137
+ ...(options.all === true ? { all: true } : {}),
138
+ destination: defaultExportRoot(run.context.agentRoot),
139
+ }, { onProgress: (message) => run.output.progress(message) });
140
+ run.output.result(result, () => exportLines(result));
141
+ });
109
142
  kb.command("delete <name>")
110
143
  .description("Permanently delete a hub and all its resources")
111
144
  .option("--force", "required confirmation flag")
@@ -1 +1 @@
1
- {"version":3,"file":"kb.js","sourceRoot":"","sources":["../../../src/commands/kb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kb.js","sourceRoot":"","sources":["../../../src/commands/kb.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aui.io/apollo-cli",
3
- "version": "0.1.52",
3
+ "version": "0.1.54",
4
4
  "description": "Command-line client for the Apollo runtime",
5
5
  "type": "module",
6
6
  "engines": {
@@ -33,12 +33,12 @@
33
33
  "test": "vitest run"
34
34
  },
35
35
  "dependencies": {
36
- "@aui.io/apollo-core": "0.1.52",
36
+ "@aui.io/apollo-core": "0.1.54",
37
37
  "commander": "^14.0.3",
38
38
  "picocolors": "^1.1.1"
39
39
  },
40
40
  "optionalDependencies": {
41
- "@aui.io/apollo-tui": "0.1.52"
41
+ "@aui.io/apollo-tui": "0.1.54"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@eslint/js": "^9.39.5",
@@ -0,0 +1,9 @@
1
+ export interface DownloadOptions {
2
+ fetch?: typeof globalThis.fetch;
3
+ /** Per-download ceiling; binaries can be large, so this floors well above the API default. */
4
+ timeoutMs?: number;
5
+ }
6
+ /** The URL without its query string — signatures must not reach logs or error text. */
7
+ export declare function describeUrl(url: string): string;
8
+ export declare function downloadBytes(url: string, options?: DownloadOptions): Promise<Uint8Array>;
9
+ export declare function downloadText(url: string, options?: DownloadOptions): Promise<string>;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Plain GETs against presigned links — GCS signed URLs and KBM's tokenized
3
+ * `/knowledge-bases/view/…` redirects. Deliberately NOT the Transport: these
4
+ * URLs carry their own credential in the query string, so a bearer header
5
+ * would either be rejected by the bucket or hand the session token to a
6
+ * third party. No auth, no service base URL, redirects followed, bytes back.
7
+ */
8
+ import { CliError } from "../errors/index.js";
9
+ const DEFAULT_TIMEOUT_MS = 120_000;
10
+ /** The URL without its query string — signatures must not reach logs or error text. */
11
+ export function describeUrl(url) {
12
+ try {
13
+ const parsed = new URL(url);
14
+ return `${parsed.origin}${parsed.pathname}`;
15
+ }
16
+ catch {
17
+ return url.split("?")[0] ?? url;
18
+ }
19
+ }
20
+ export async function downloadBytes(url, options = {}) {
21
+ const fetchImpl = options.fetch ?? globalThis.fetch;
22
+ const timeoutMs = Math.max(options.timeoutMs ?? 0, DEFAULT_TIMEOUT_MS);
23
+ const controller = new AbortController();
24
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
25
+ try {
26
+ const response = await fetchImpl(url, {
27
+ method: "GET",
28
+ redirect: "follow",
29
+ signal: controller.signal,
30
+ });
31
+ if (!response.ok) {
32
+ throw new CliError(`Download failed (${response.status}) for ${describeUrl(url)}.`, {
33
+ code: "DOWNLOAD_FAILED",
34
+ suggestion: "Signed links expire about an hour after the export starts — re-run the command.",
35
+ });
36
+ }
37
+ return new Uint8Array(await response.arrayBuffer());
38
+ }
39
+ catch (error) {
40
+ if (controller.signal.aborted) {
41
+ throw new CliError(`Download timed out after ${timeoutMs}ms for ${describeUrl(url)}.`, { code: "REQUEST_TIMEOUT", cause: error });
42
+ }
43
+ throw error;
44
+ }
45
+ finally {
46
+ clearTimeout(timer);
47
+ }
48
+ }
49
+ export async function downloadText(url, options = {}) {
50
+ return new TextDecoder().decode(await downloadBytes(url, options));
51
+ }
52
+ //# sourceMappingURL=download.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/api/download.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAQ9C,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAEnC,uFAAuF;AACvF,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAW,EACX,UAA2B,EAAE;IAE7B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;IACpD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;YACpC,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,QAAQ,CAChB,oBAAoB,QAAQ,CAAC,MAAM,SAAS,WAAW,CAAC,GAAG,CAAC,GAAG,EAC/D;gBACE,IAAI,EAAE,iBAAiB;gBACvB,UAAU,EACR,iFAAiF;aACpF,CACF,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,IAAI,QAAQ,CAChB,4BAA4B,SAAS,UAAU,WAAW,CAAC,GAAG,CAAC,GAAG,EAClE,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,CAC1C,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAW,EACX,UAA2B,EAAE;IAE7B,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AACrE,CAAC"}
@@ -64,6 +64,56 @@ export interface UploadFilePart {
64
64
  content: Uint8Array | string;
65
65
  contentType?: string;
66
66
  }
67
+ /**
68
+ * `/knowledge-bases/view/export` acceptance. Only a pointer: the manifest
69
+ * itself sits behind `json_url`, a presigned link. Everything the export
70
+ * hands out expires at `expires_at` (~1h) — download in the same run.
71
+ */
72
+ export interface ViewExportResponse {
73
+ json_url: string;
74
+ expires_at: string;
75
+ }
76
+ /**
77
+ * One indexed FILE / single_resource inside the export manifest.
78
+ * `download_url` is the extracted body (assembled markdown, or a JSON rows
79
+ * array for tabular sources); `original_download_url` is the uploaded
80
+ * binary and is only set for file resources whose original still exists.
81
+ */
82
+ export interface ViewExportFile {
83
+ title: string;
84
+ /** "file" | "single_resource" | "website" */
85
+ source: string;
86
+ url?: string | null;
87
+ download_url?: string | null;
88
+ original_download_url?: string | null;
89
+ created_at?: string | null;
90
+ updated_at?: string | null;
91
+ created_by?: string | null;
92
+ }
93
+ /** One scraped website inside the export manifest — the URL is its identity. */
94
+ export interface ViewExportWebsite {
95
+ url: string;
96
+ title?: string | null;
97
+ download_url?: string | null;
98
+ created_at?: string | null;
99
+ updated_at?: string | null;
100
+ created_by?: string | null;
101
+ }
102
+ export interface ViewExportKnowledgeBase {
103
+ name: string;
104
+ description?: string | null;
105
+ settings?: Record<string, unknown> | null;
106
+ tabular_files?: ViewExportFile[];
107
+ markdown_files?: ViewExportFile[];
108
+ websites?: ViewExportWebsite[];
109
+ created_at?: string | null;
110
+ updated_at?: string | null;
111
+ created_by?: string | null;
112
+ }
113
+ /** The JSON behind `ViewExportResponse.json_url`. */
114
+ export interface ViewExportManifest {
115
+ knowledge_bases: ViewExportKnowledgeBase[];
116
+ }
67
117
  export declare class KbmClient {
68
118
  private readonly http;
69
119
  constructor(http: HttpClient);
@@ -71,6 +121,14 @@ export declare class KbmClient {
71
121
  listKnowledgeBases(agentId: string): Promise<KnowledgeBase[]>;
72
122
  /** Latest indexing jobs for one hub (newest page only). */
73
123
  indexingJobs(kbId: string): Promise<IndexingJob[]>;
124
+ /**
125
+ * Start a view export of every hub in the agent's scope (`agent_id`
126
+ * resolves the scope server-side, like the list). Read-only: KBM writes
127
+ * the manifest to storage and answers with a presigned pointer to it.
128
+ * Only INDEXED resources appear — pending and failed ones don't, so
129
+ * `indexingJobs` stays the place to learn about those.
130
+ */
131
+ exportView(agentId: string): Promise<ViewExportResponse>;
74
132
  /** Delete a whole hub (its resources included) — irreversible. */
75
133
  deleteKnowledgeBase(kbId: string): Promise<void>;
76
134
  /**
@@ -29,6 +29,16 @@ export class KbmClient {
29
29
  const result = await this.http.request(`/v1/indexing-jobs/knowledge-base/${encodeURIComponent(kbId)}`, { query: { page: 1, size: PAGE_SIZE } });
30
30
  return Array.isArray(result) ? result : result.items;
31
31
  }
32
+ /**
33
+ * Start a view export of every hub in the agent's scope (`agent_id`
34
+ * resolves the scope server-side, like the list). Read-only: KBM writes
35
+ * the manifest to storage and answers with a presigned pointer to it.
36
+ * Only INDEXED resources appear — pending and failed ones don't, so
37
+ * `indexingJobs` stays the place to learn about those.
38
+ */
39
+ async exportView(agentId) {
40
+ return this.http.request("/v1/knowledge-bases/view/export", { query: { agent_id: agentId } });
41
+ }
32
42
  /** Delete a whole hub (its resources included) — irreversible. */
33
43
  async deleteKnowledgeBase(kbId) {
34
44
  await this.http.request(`/v1/knowledge-bases/${encodeURIComponent(kbId)}`, { method: "DELETE" });
@@ -1 +1 @@
1
- {"version":3,"file":"kbm.js","sourceRoot":"","sources":["../../../src/api/kbm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kbm.js","sourceRoot":"","sources":["../../../src/api/kbm.ts"],"names":[],"mappings":"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"}
@@ -71,3 +71,88 @@ export declare function hubRefCheck(refs: string[], hubs: KnowledgeBase[]): {
71
71
  missing: string[];
72
72
  unreferenced: string[];
73
73
  };
74
+ /** The export root, relative to the checkout. */
75
+ export declare const KNOWLEDGE_DATA_DIR = "knowledge-data";
76
+ /** Where exports go: `<checkout>/knowledge-data` (cwd-relative outside a checkout). */
77
+ export declare function defaultExportRoot(agentRoot: string | undefined): string;
78
+ /**
79
+ * Hub content is platform data, not program source — it must never land
80
+ * where a push could pick it up. An invariant on the service, not a CLI
81
+ * nicety: every caller gets it.
82
+ */
83
+ export declare function assertOutsideBundle(destination: string, agentRoot: string | undefined): void;
84
+ /** One indexed resource as written to disk. Paths are relative to the hub directory. */
85
+ export interface ExportedResource {
86
+ kind: "markdown" | "tabular" | "website";
87
+ title: string;
88
+ /** KBM origin type: "file" | "single_resource" | "website". */
89
+ source: string;
90
+ url: string | null;
91
+ /** The extracted body — `.md`, or a `.json` rows array for tabular sources. */
92
+ content: string | null;
93
+ /** The original upload (files only; null when KBM no longer holds the binary). */
94
+ original: string | null;
95
+ created_at: string | null;
96
+ updated_at: string | null;
97
+ created_by: string | null;
98
+ }
99
+ /** `manifest.json` in each hub directory — the CLI's own shape, never the wire's (no signed URLs). */
100
+ export interface ExportManifest {
101
+ format: "apollo-knowledge-export/1";
102
+ exported_at: string;
103
+ agent_id: string;
104
+ hub: {
105
+ id: string | null;
106
+ name: string;
107
+ description: string | null;
108
+ settings: Record<string, unknown> | null;
109
+ };
110
+ resources: ExportedResource[];
111
+ }
112
+ export interface HubExport {
113
+ hub: {
114
+ id: string | null;
115
+ name: string;
116
+ };
117
+ /** Absolute path of the hub directory. */
118
+ dir: string;
119
+ resources: ExportedResource[];
120
+ /** Original binaries actually written. */
121
+ originals: number;
122
+ /** Downloads that failed — the rest of the export still lands; nothing is silent. */
123
+ failures: {
124
+ title: string;
125
+ error: string;
126
+ }[];
127
+ }
128
+ export interface HubExportResult {
129
+ /** Absolute export root. */
130
+ destination: string;
131
+ /** When the signed links KBM handed out stop working; null when nothing was exported. */
132
+ expires_at: string | null;
133
+ hubs: HubExport[];
134
+ /** Hubs KBM exported for this scope that `kb list` does not own — left on the server, reported here. */
135
+ unlisted: string[];
136
+ }
137
+ export interface ExportHubsParams {
138
+ /** One hub by name — mutually exclusive with `all`. */
139
+ hub?: string;
140
+ all?: boolean;
141
+ /** Export root — `defaultExportRoot(...)` for the CLI; must not be inside `bundle/`. */
142
+ destination: string;
143
+ }
144
+ export interface ExportHubsOptions extends KnowledgeServiceOptions {
145
+ /** A notice as each hub's downloads start — human-mode progress on stderr. */
146
+ onProgress?: (message: string) => void;
147
+ }
148
+ /**
149
+ * Snapshot one hub (or every hub) into `<destination>/<hub>/`:
150
+ * `manifest.json`, `content/` (extracted markdown / tabular JSON) and
151
+ * `originals/` (the uploaded binaries). Only INDEXED resources exist in
152
+ * KBM's export — `hubStatus` is where pending/failed jobs show. Per-file
153
+ * download failures are collected, not thrown; the hub's stale files from a
154
+ * previous export are removed so the directory reflects this run.
155
+ */
156
+ export declare function exportHubs(context: Context, params: ExportHubsParams, options?: ExportHubsOptions): Promise<HubExportResult>;
157
+ /** One human line per hub — shared by progress and the CLI renderer. */
158
+ export declare function describeHubExport(result: HubExport, destination: string): string;
@@ -11,9 +11,15 @@
11
11
  * Hubs are agent-scoped and matched BY NAME at runtime —
12
12
  * `knowledge_base_names: [hub]` — so the local cross-check compares
13
13
  * program `hub:` references against remote hub names.
14
+ *
15
+ * The one read of content is `exportHubs` — a one-way snapshot of what KBM
16
+ * has indexed, written to `knowledge-data/<hub>/` beside (never inside)
17
+ * `bundle/`. It is an export, not a mirror: nothing reads it back, push
18
+ * never sees it, and re-running it overwrites its own files only.
14
19
  */
15
- import { readFile } from "node:fs/promises";
20
+ import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
16
21
  import path from "node:path";
22
+ import { downloadBytes, downloadText } from "../api/download.js";
17
23
  import { readProgramFiles } from "../bundle/files.js";
18
24
  import { CliError, ConfigError, ValidationError } from "../errors/index.js";
19
25
  import { createClients } from "./clients.js";
@@ -42,17 +48,22 @@ export async function hubStatus(context, hub, options = {}) {
42
48
  }
43
49
  return { hub, jobs, counts };
44
50
  }
51
+ /** Name match the way the runtime does it — exact first, then case-insensitive. */
52
+ function findByName(items, name) {
53
+ return (items.find((item) => item.name === name) ??
54
+ items.find((item) => item.name.toLowerCase() === name.toLowerCase()));
55
+ }
56
+ function hubNotFound(name) {
57
+ return new CliError(`Knowledge hub "${name}" not found for this agent.`, {
58
+ code: "NOT_FOUND",
59
+ suggestion: "Check the name (`apollo kb list`).",
60
+ });
61
+ }
45
62
  /** Resolve a hub by name (exact, then case-insensitive). */
46
63
  export async function getHubByName(context, name, options = {}) {
47
- const hubs = await listHubs(context, options);
48
- const match = hubs.find((hub) => hub.name === name) ??
49
- hubs.find((hub) => hub.name.toLowerCase() === name.toLowerCase());
50
- if (!match) {
51
- throw new CliError(`Knowledge hub "${name}" not found for this agent.`, {
52
- code: "NOT_FOUND",
53
- suggestion: "Check the name (`apollo kb list`).",
54
- });
55
- }
64
+ const match = findByName(await listHubs(context, options), name);
65
+ if (!match)
66
+ throw hubNotFound(name);
56
67
  return match;
57
68
  }
58
69
  /** Delete a whole hub — irreversible, resources included. */
@@ -213,4 +224,344 @@ export function hubRefCheck(refs, hubs) {
213
224
  unreferenced: hubs.map((h) => h.name).filter((name) => !referenced.has(name)),
214
225
  };
215
226
  }
227
+ // ─── Export — a one-way snapshot of indexed content ───────────────────────
228
+ //
229
+ // `kb export` is the read side that DESIGN §4.7 left open: not a mirror
230
+ // that push/pull reconcile, but a download of what KBM has indexed, for
231
+ // inspection, backup, or re-upload elsewhere with `kb add`. It lives in
232
+ // `knowledge-data/` — a sibling of `bundle/`, so `status`/`diff`/`push`
233
+ // (which read `bundle/src` and `bundle/build` only) never see it. The CLI
234
+ // exposes no destination flag; the service still refuses anything inside
235
+ // `bundle/` so no other caller (TUI, scripts) can put content there.
236
+ /** The export root, relative to the checkout. */
237
+ export const KNOWLEDGE_DATA_DIR = "knowledge-data";
238
+ /** Where exports go: `<checkout>/knowledge-data` (cwd-relative outside a checkout). */
239
+ export function defaultExportRoot(agentRoot) {
240
+ return path.join(agentRoot ?? process.cwd(), KNOWLEDGE_DATA_DIR);
241
+ }
242
+ /**
243
+ * Hub content is platform data, not program source — it must never land
244
+ * where a push could pick it up. An invariant on the service, not a CLI
245
+ * nicety: every caller gets it.
246
+ */
247
+ export function assertOutsideBundle(destination, agentRoot) {
248
+ if (agentRoot === undefined)
249
+ return;
250
+ const bundle = path.resolve(agentRoot, "bundle");
251
+ const target = path.resolve(destination);
252
+ if (target === bundle || target.startsWith(`${bundle}${path.sep}`)) {
253
+ throw new ValidationError(`Refusing to export knowledge into ${path.relative(agentRoot, target) || "bundle"}/ — that is the program bundle.`, `Hub content is not program source; exports belong in ${KNOWLEDGE_DATA_DIR}/, a sibling of bundle/.`);
254
+ }
255
+ }
256
+ const DOWNLOAD_CONCURRENCY = 4;
257
+ const CONTENT_DIR = "content";
258
+ const ORIGINALS_DIR = "originals";
259
+ /**
260
+ * Snapshot one hub (or every hub) into `<destination>/<hub>/`:
261
+ * `manifest.json`, `content/` (extracted markdown / tabular JSON) and
262
+ * `originals/` (the uploaded binaries). Only INDEXED resources exist in
263
+ * KBM's export — `hubStatus` is where pending/failed jobs show. Per-file
264
+ * download failures are collected, not thrown; the hub's stale files from a
265
+ * previous export are removed so the directory reflects this run.
266
+ */
267
+ export async function exportHubs(context, params, options = {}) {
268
+ if (params.hub === undefined && params.all !== true) {
269
+ throw new ValidationError("Name a hub to export, or pass --all.", "`apollo kb list` shows the agent's hubs.");
270
+ }
271
+ if (params.hub !== undefined && params.all === true) {
272
+ throw new ValidationError("Pass a hub name or --all, not both.");
273
+ }
274
+ const agentId = requireAgent(context);
275
+ const destination = path.resolve(params.destination);
276
+ assertOutsideBundle(destination, context.agentRoot);
277
+ const clients = clientsFor(context, options);
278
+ const hubs = await clients.kbm.listKnowledgeBases(agentId);
279
+ let targets;
280
+ if (params.hub !== undefined) {
281
+ const match = findByName(hubs, params.hub);
282
+ if (!match)
283
+ throw hubNotFound(params.hub);
284
+ targets = [match];
285
+ }
286
+ else {
287
+ targets = hubs;
288
+ }
289
+ if (targets.length === 0) {
290
+ return { destination, expires_at: null, hubs: [], unlisted: [] };
291
+ }
292
+ const download = {
293
+ ...(options.fetch ? { fetch: options.fetch } : {}),
294
+ timeoutMs: context.timeoutMs,
295
+ };
296
+ const pointer = await clients.kbm.exportView(agentId);
297
+ const manifest = parseManifest(await downloadText(pointer.json_url, download));
298
+ const exportedAt = new Date().toISOString();
299
+ const results = [];
300
+ for (const hub of targets) {
301
+ const remote = findByName(manifest.knowledge_bases, hub.name);
302
+ const planned = (remote?.markdown_files?.length ?? 0) +
303
+ (remote?.tabular_files?.length ?? 0) +
304
+ (remote?.websites?.length ?? 0);
305
+ options.onProgress?.(`Exporting ${hub.name} (${planned} indexed resources)…`);
306
+ results.push(await exportOneHub({
307
+ agentId,
308
+ hub,
309
+ remote,
310
+ dir: path.join(destination, safeSegment(hub.name)),
311
+ exportedAt,
312
+ download,
313
+ }));
314
+ }
315
+ const owned = new Set(hubs.map((hub) => hub.name.toLowerCase()));
316
+ const unlisted = manifest.knowledge_bases
317
+ .map((kb) => kb.name)
318
+ .filter((name) => !owned.has(name.toLowerCase()))
319
+ .sort((a, b) => a.localeCompare(b));
320
+ return { destination, expires_at: pointer.expires_at, hubs: results, unlisted };
321
+ }
322
+ /** One human line per hub — shared by progress and the CLI renderer. */
323
+ export function describeHubExport(result, destination) {
324
+ const where = `${path.relative(path.dirname(destination), result.dir) || result.dir}/`;
325
+ if (result.resources.length === 0 && result.failures.length === 0) {
326
+ return `${result.hub.name} → ${where} — no indexed content`;
327
+ }
328
+ const counts = {
329
+ markdown: 0,
330
+ tabular: 0,
331
+ website: 0,
332
+ };
333
+ for (const resource of result.resources)
334
+ counts[resource.kind] += 1;
335
+ const parts = [
336
+ counts.markdown > 0 ? `${counts.markdown} md` : undefined,
337
+ counts.tabular > 0 ? `${counts.tabular} tabular` : undefined,
338
+ counts.website > 0 ? `${counts.website} web` : undefined,
339
+ ].filter((part) => part !== undefined);
340
+ const originals = result.originals > 0 ? `, ${result.originals} originals` : "";
341
+ const failed = result.failures.length > 0 ? `, ${result.failures.length} failed` : "";
342
+ return `${result.hub.name} → ${where} — ${result.resources.length} resources (${parts.join(", ")})${originals}${failed}`;
343
+ }
344
+ function parseManifest(text) {
345
+ let parsed;
346
+ try {
347
+ parsed = JSON.parse(text);
348
+ }
349
+ catch (error) {
350
+ throw new CliError("The knowledge export manifest is not valid JSON.", {
351
+ code: "UPSTREAM_SHAPE",
352
+ cause: error,
353
+ });
354
+ }
355
+ if (typeof parsed !== "object" ||
356
+ parsed === null ||
357
+ !Array.isArray(parsed.knowledge_bases)) {
358
+ throw new CliError("The knowledge export manifest has an unexpected shape.", {
359
+ code: "UPSTREAM_SHAPE",
360
+ detail: parsed,
361
+ });
362
+ }
363
+ return parsed;
364
+ }
365
+ async function exportOneHub(input) {
366
+ const { hub, remote, dir } = input;
367
+ const previous = await readPreviousOutputs(dir);
368
+ const contentNames = new Set();
369
+ const originalNames = new Set();
370
+ const resources = [];
371
+ const jobs = [];
372
+ const plan = (kind, entry, title, source) => {
373
+ const resource = {
374
+ kind,
375
+ title,
376
+ source,
377
+ url: entry.url ?? null,
378
+ content: null,
379
+ original: null,
380
+ created_at: entry.created_at ?? null,
381
+ updated_at: entry.updated_at ?? null,
382
+ created_by: entry.created_by ?? null,
383
+ };
384
+ resources.push(resource);
385
+ if (entry.download_url) {
386
+ const extension = kind === "tabular" ? ".json" : ".md";
387
+ const relative = path.posix.join(CONTENT_DIR, uniqueName(contentNames, `${slugTitle(title)}${extension}`));
388
+ jobs.push({ resource, field: "content", url: entry.download_url, relative });
389
+ }
390
+ if ("original_download_url" in entry && entry.original_download_url) {
391
+ const relative = path.posix.join(ORIGINALS_DIR, uniqueName(originalNames, safeFilename(title)));
392
+ jobs.push({ resource, field: "original", url: entry.original_download_url, relative });
393
+ }
394
+ };
395
+ for (const entry of remote?.markdown_files ?? []) {
396
+ plan("markdown", entry, entry.title, entry.source);
397
+ }
398
+ for (const entry of remote?.tabular_files ?? []) {
399
+ plan("tabular", entry, entry.title, entry.source);
400
+ }
401
+ for (const entry of remote?.websites ?? []) {
402
+ plan("website", entry, websiteTitle(entry), "website");
403
+ }
404
+ await mkdir(dir, { recursive: true });
405
+ const failures = [];
406
+ let originals = 0;
407
+ await mapLimit(jobs, DOWNLOAD_CONCURRENCY, async (job) => {
408
+ try {
409
+ const bytes = await downloadBytes(job.url, input.download);
410
+ const target = path.join(dir, job.relative);
411
+ await mkdir(path.dirname(target), { recursive: true });
412
+ await writeFile(target, bytes);
413
+ job.resource[job.field] = job.relative;
414
+ if (job.field === "original")
415
+ originals += 1;
416
+ }
417
+ catch (error) {
418
+ failures.push({
419
+ title: `${job.resource.title}${job.field === "original" ? " (original)" : ""}`,
420
+ error: error instanceof Error ? error.message : String(error),
421
+ });
422
+ }
423
+ });
424
+ // Stale outputs from an earlier run — only paths a previous manifest of
425
+ // ours named, never anything else in the directory.
426
+ const planned = new Set(jobs.map((job) => job.relative));
427
+ for (const relative of previous) {
428
+ if (!planned.has(relative))
429
+ await rm(path.join(dir, relative), { force: true });
430
+ }
431
+ const manifest = {
432
+ format: "apollo-knowledge-export/1",
433
+ exported_at: input.exportedAt,
434
+ agent_id: input.agentId,
435
+ hub: {
436
+ id: hub.id,
437
+ name: hub.name,
438
+ description: remote?.description ?? hub.description ?? null,
439
+ settings: remote?.settings ?? null,
440
+ },
441
+ resources,
442
+ };
443
+ await writeFile(path.join(dir, "manifest.json"), `${JSON.stringify(manifest, null, 2)}\n`, "utf8");
444
+ return { hub: { id: hub.id, name: hub.name }, dir, resources, originals, failures };
445
+ }
446
+ /** Relative paths a previous export of ours wrote — from its own manifest, so we never touch foreign files. */
447
+ async function readPreviousOutputs(dir) {
448
+ let text;
449
+ try {
450
+ text = await readFile(path.join(dir, "manifest.json"), "utf8");
451
+ }
452
+ catch {
453
+ return [];
454
+ }
455
+ let parsed;
456
+ try {
457
+ parsed = JSON.parse(text);
458
+ }
459
+ catch {
460
+ return [];
461
+ }
462
+ const manifest = parsed;
463
+ if (typeof manifest !== "object" ||
464
+ manifest === null ||
465
+ typeof manifest.format !== "string" ||
466
+ !manifest.format.startsWith("apollo-knowledge-export/") ||
467
+ !Array.isArray(manifest.resources)) {
468
+ return [];
469
+ }
470
+ const outputs = [];
471
+ for (const resource of manifest.resources) {
472
+ for (const candidate of [resource.content, resource.original]) {
473
+ if (typeof candidate === "string" && isOwnedOutput(candidate))
474
+ outputs.push(candidate);
475
+ }
476
+ }
477
+ return outputs;
478
+ }
479
+ /** Only `content/…` and `originals/…`, one level, no traversal — the shapes we write. */
480
+ function isOwnedOutput(relative) {
481
+ const segments = relative.split("/");
482
+ return (segments.length === 2 &&
483
+ (segments[0] === CONTENT_DIR || segments[0] === ORIGINALS_DIR) &&
484
+ segments[1] !== undefined &&
485
+ segments[1] !== "" &&
486
+ segments[1] !== "." &&
487
+ segments[1] !== "..");
488
+ }
489
+ const UNSAFE_PATH_CHARS = /[\\/:*?"<>|]/g;
490
+ /** Control characters have no place in a filename; drop them before the visible-char rules run. */
491
+ function stripControl(value) {
492
+ return Array.from(value)
493
+ .filter((char) => char.charCodeAt(0) >= 0x20)
494
+ .join("");
495
+ }
496
+ /** A hub name as a directory name — hub names carry no whitespace by our rules, but UI-created ones might. */
497
+ function safeSegment(name) {
498
+ const cleaned = stripControl(name)
499
+ .trim()
500
+ .replace(UNSAFE_PATH_CHARS, "-")
501
+ .replace(/\s+/g, "-")
502
+ .replace(/^\.+/, "");
503
+ return cleaned.length === 0 ? "hub" : cleaned;
504
+ }
505
+ /** A resource title as a content file stem: lower-case, ASCII, hyphenated, extension dropped. */
506
+ function slugTitle(title) {
507
+ const stem = title.replace(/\.[A-Za-z0-9]{1,5}$/, "");
508
+ const slug = stem
509
+ .normalize("NFKD")
510
+ .replace(/[\u0300-\u036f]/g, "")
511
+ .toLowerCase()
512
+ .replace(/[^a-z0-9]+/g, "-")
513
+ .replace(/^-+|-+$/g, "")
514
+ .slice(0, 80)
515
+ .replace(/-+$/, "");
516
+ return slug.length === 0 ? "untitled" : slug;
517
+ }
518
+ /** An original's display name kept as the filename (it usually IS the upload's name), made path-safe. */
519
+ function safeFilename(title) {
520
+ const cleaned = stripControl(title)
521
+ .trim()
522
+ .replace(UNSAFE_PATH_CHARS, "_")
523
+ .replace(/^\.+/, "");
524
+ return cleaned.length === 0 ? "file" : cleaned;
525
+ }
526
+ function uniqueName(taken, candidate) {
527
+ if (!taken.has(candidate)) {
528
+ taken.add(candidate);
529
+ return candidate;
530
+ }
531
+ const dot = candidate.lastIndexOf(".");
532
+ const stem = dot > 0 ? candidate.slice(0, dot) : candidate;
533
+ const extension = dot > 0 ? candidate.slice(dot) : "";
534
+ for (let n = 2;; n += 1) {
535
+ const next = `${stem}-${n}${extension}`;
536
+ if (!taken.has(next)) {
537
+ taken.add(next);
538
+ return next;
539
+ }
540
+ }
541
+ }
542
+ function websiteTitle(entry) {
543
+ const title = entry.title?.trim();
544
+ if (title)
545
+ return title;
546
+ try {
547
+ const parsed = new URL(entry.url);
548
+ return `${parsed.hostname}${parsed.pathname === "/" ? "" : parsed.pathname}`;
549
+ }
550
+ catch {
551
+ return entry.url;
552
+ }
553
+ }
554
+ async function mapLimit(items, limit, worker) {
555
+ let next = 0;
556
+ const lanes = Array.from({ length: Math.min(limit, items.length) }, async () => {
557
+ for (;;) {
558
+ const index = next;
559
+ next += 1;
560
+ if (index >= items.length)
561
+ return;
562
+ await worker(items[index]);
563
+ }
564
+ });
565
+ await Promise.all(lanes);
566
+ }
216
567
  //# sourceMappingURL=knowledge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../../src/services/knowledge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAQ7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAgB,MAAM,cAAc,CAAC;AAO3D,SAAS,UAAU,CAAC,OAAgB,EAAE,OAAgC;IACpE,OAAO,CACL,OAAO,CAAC,OAAO;QACf,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACtE,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,OAAgB;IACpC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,WAAW,CACnB,iCAAiC,EACjC,uDAAuD,CACxD,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC;AACzB,CAAC;AAED,uCAAuC;AACvC,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAgB,EAChB,UAAmC,EAAE;IAErC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACtE,CAAC;AASD,kDAAkD;AAClD,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAgB,EAChB,GAAkB,EAClB,UAAmC,EAAE;IAErC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzE,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED,4DAA4D;AAC5D,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAgB,EAChB,IAAY,EACZ,UAAmC,EAAE;IAErC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,KAAK,GACT,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,QAAQ,CAAC,kBAAkB,IAAI,6BAA6B,EAAE;YACtE,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,oCAAoC;SACjD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAgB,EAChB,GAA8B,EAC9B,UAAmC,EAAE;IAErC,MAAM,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAgB,EAChB,MAA8C,EAC9C,UAAmC,EAAE;IAErC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,eAAe,CAAC,uBAAuB,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,eAAe,CACvB,aAAa,IAAI,wBAAwB,EACzC,oFAAoF,CACrF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CACzB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CACvD,CAAC;IACF,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC,IAAI,kCAAkC,EAAE;YACvE,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,4DAA4D;SACzE,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACrC,IAAI;QACJ,OAAO;QACP,SAAS;QACT,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS;YAClC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;KACzC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB;IACrC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,WAAW,CACnB,+CAA+C,EAC/C,kDAAkD,CACnD,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC;AAUD,SAAS,eAAe,CACtB,GAAkB,EAClB,QAAkD;IAElD,MAAM,QAAQ,GACZ,gBAAgB,IAAI,QAAQ;QAC1B,CAAC,CAAC,QAAQ,CAAC,cAAc;QACzB,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC7B,MAAM,MAAM,GACV,cAAc,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC5E,OAAO;QACL,GAAG;QACH,QAAQ;QACR,MAAM;QACN,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,EAAE,IAAI,CAAC,aAAa;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,mEAAmE;YACnE,qDAAqD;YACrD,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;gBACjD,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;SAC3B,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAgB,EAChB,MAAwC,EACxC,UAAmC,EAAE;IAErC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,eAAe,CAAC,qBAAqB,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,eAAe,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IACjF,CAAC,CAAC,CACH,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;QAClE,eAAe,EAAE,GAAG,CAAC,EAAE;QACvB,OAAO;QACP,SAAS;QACT,KAAK;KACN,CAAC,CAAC;IACH,OAAO,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAAgB,EAChB,MAAuC,EACvC,UAAmC,EAAE;IAErC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,eAAe,CACvB,uBAAuB,GAAG,EAAE,EAC5B,sDAAsD,CACvD,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC;QACrE,eAAe,EAAE,GAAG,CAAC,EAAE;QACvB,OAAO;QACP,SAAS;QACT,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KAC1C,CAAC,CAAC;IACH,OAAO,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAiB;IACpD,IAAI,KAA6B,CAAC;IAClC,IAAI,CAAC;QACH,KAAK,GAAG,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAChF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAClE,MAAM,KAAK,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QACrC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,IAAc,EACd,IAAqB;IAErB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/C,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAC9E,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../../src/services/knowledge.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aui.io/apollo-core",
3
- "version": "0.1.52",
3
+ "version": "0.1.54",
4
4
  "description": "Shared Apollo console core — API clients, config, and services",
5
5
  "type": "module",
6
6
  "engines": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aui.io/apollo-tui",
3
- "version": "0.1.52",
3
+ "version": "0.1.54",
4
4
  "description": "Interactive Apollo operator TUI built on OpenTUI",
5
5
  "type": "module",
6
6
  "engines": {
@@ -35,7 +35,7 @@
35
35
  "start": "node ./bin/apollo-tui.js"
36
36
  },
37
37
  "dependencies": {
38
- "@aui.io/apollo-core": "0.1.52",
38
+ "@aui.io/apollo-core": "0.1.54",
39
39
  "@opentui/core": "^0.4.5",
40
40
  "@opentui/react": "^0.4.5",
41
41
  "diff": "8.0.2",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aui.io/apollo",
3
- "version": "0.1.52",
3
+ "version": "0.1.54",
4
4
  "description": "Apollo operator console — CLI + interactive TUI",
5
5
  "type": "module",
6
6
  "engines": {
@@ -31,9 +31,9 @@
31
31
  "postpack": "node ./scripts/clean-bundle.mjs"
32
32
  },
33
33
  "dependencies": {
34
- "@aui.io/apollo-core": "0.1.52",
35
- "@aui.io/apollo-cli": "0.1.52",
36
- "@aui.io/apollo-tui": "0.1.52",
34
+ "@aui.io/apollo-core": "0.1.54",
35
+ "@aui.io/apollo-cli": "0.1.54",
36
+ "@aui.io/apollo-tui": "0.1.54",
37
37
  "picocolors": "^1.1.1",
38
38
  "yaml": "^2.9.0",
39
39
  "commander": "^14.0.3",