@jterrats/open-orchestra 0.5.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +31 -2
  3. package/dist/cli.js +10 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/command-manifest.js +5 -2
  6. package/dist/command-manifest.js.map +1 -1
  7. package/dist/commands.d.ts +2 -2
  8. package/dist/commands.js +8 -3
  9. package/dist/commands.js.map +1 -1
  10. package/dist/context-budget.js +14 -0
  11. package/dist/context-budget.js.map +1 -1
  12. package/dist/gemini-provider.d.ts +12 -0
  13. package/dist/gemini-provider.js +132 -0
  14. package/dist/gemini-provider.js.map +1 -0
  15. package/dist/lesson-assist.d.ts +19 -0
  16. package/dist/lesson-assist.js +70 -0
  17. package/dist/lesson-assist.js.map +1 -0
  18. package/dist/memory-status.d.ts +22 -0
  19. package/dist/memory-status.js +139 -0
  20. package/dist/memory-status.js.map +1 -0
  21. package/dist/model-providers.d.ts +2 -0
  22. package/dist/model-providers.js +8 -0
  23. package/dist/model-providers.js.map +1 -1
  24. package/dist/ollama-provider.d.ts +12 -0
  25. package/dist/ollama-provider.js +86 -0
  26. package/dist/ollama-provider.js.map +1 -0
  27. package/dist/planning-commands.d.ts +1 -0
  28. package/dist/planning-commands.js +9 -0
  29. package/dist/planning-commands.js.map +1 -1
  30. package/dist/project-detection.js +13 -1
  31. package/dist/project-detection.js.map +1 -1
  32. package/dist/prompt-registry-classifier.d.ts +3 -0
  33. package/dist/prompt-registry-classifier.js +83 -0
  34. package/dist/prompt-registry-classifier.js.map +1 -0
  35. package/dist/prompt-registry-update.d.ts +21 -0
  36. package/dist/prompt-registry-update.js +128 -0
  37. package/dist/prompt-registry-update.js.map +1 -0
  38. package/dist/prompt-registry-validation.d.ts +12 -0
  39. package/dist/prompt-registry-validation.js +104 -0
  40. package/dist/prompt-registry-validation.js.map +1 -0
  41. package/dist/prompt-registry.d.ts +1 -0
  42. package/dist/prompt-registry.js +2 -2
  43. package/dist/prompt-registry.js.map +1 -1
  44. package/dist/runtime-execution-adapters.js +16 -0
  45. package/dist/runtime-execution-adapters.js.map +1 -1
  46. package/dist/skills-catalog.js +57 -0
  47. package/dist/skills-catalog.js.map +1 -1
  48. package/dist/skills-commands.d.ts +2 -0
  49. package/dist/skills-commands.js +45 -1
  50. package/dist/skills-commands.js.map +1 -1
  51. package/dist/skills-memory.d.ts +6 -0
  52. package/dist/skills-memory.js +16 -0
  53. package/dist/skills-memory.js.map +1 -1
  54. package/dist/skills.d.ts +1 -1
  55. package/dist/skills.js +1 -1
  56. package/dist/skills.js.map +1 -1
  57. package/dist/types/runtime.d.ts +1 -1
  58. package/dist/workspace-artifacts.d.ts +6 -0
  59. package/dist/workspace-artifacts.js +31 -0
  60. package/dist/workspace-artifacts.js.map +1 -0
  61. package/dist/workspace-validator.d.ts +4 -1
  62. package/dist/workspace-validator.js +8 -20
  63. package/dist/workspace-validator.js.map +1 -1
  64. package/docs/architecture.md +69 -2
  65. package/docs/core-command-surface.md +71 -0
  66. package/docs/end-to-end-demo.md +87 -0
  67. package/docs/runtime-llm-flow.md +18 -4
  68. package/docs/skill-loading-strategy.md +1 -0
  69. package/docs/tracker-adapter-contract.md +66 -0
  70. package/package.json +10 -5
  71. package/skills/doc-sync/SKILL.md +40 -0
  72. package/skills/doc-sync/manifest.json +58 -0
@@ -0,0 +1,132 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { isAbsolute, resolve } from "node:path";
3
+ export class GeminiModelProvider {
4
+ id = "gemini";
5
+ capabilities = {
6
+ streaming: false,
7
+ tools: false,
8
+ vision: false,
9
+ jsonMode: true,
10
+ maxContextTokens: 0,
11
+ timeoutMs: 30000,
12
+ };
13
+ fetchFn;
14
+ env;
15
+ constructor({ fetchFn = fetch, env = process.env, } = {}) {
16
+ this.fetchFn = fetchFn;
17
+ this.env = env;
18
+ }
19
+ async complete(request) {
20
+ const apiKey = geminiApiKey(this.env);
21
+ if (!apiKey) {
22
+ throw new Error("GEMINI_API_KEY is required for provider gemini");
23
+ }
24
+ const response = await this.fetchFn(geminiGenerateContentEndpoint(this.env.GEMINI_BASE_URL, request.model), {
25
+ method: "POST",
26
+ headers: {
27
+ "x-goog-api-key": apiKey,
28
+ "content-type": "application/json",
29
+ },
30
+ body: JSON.stringify(geminiRequestBody(request)),
31
+ signal: AbortSignal.timeout(request.timeoutMs ?? this.capabilities.timeoutMs),
32
+ });
33
+ if (!response.ok) {
34
+ throw new Error(`Gemini API returned HTTP ${response.status}`);
35
+ }
36
+ const payload = (await response.json());
37
+ return {
38
+ id: stringFrom(payload.responseId, "gemini-response"),
39
+ provider: this.id,
40
+ model: stringFrom(payload.modelVersion, request.model),
41
+ content: geminiOutputText(payload),
42
+ usage: {
43
+ inputTokens: numberFrom(payload.usageMetadata?.promptTokenCount),
44
+ outputTokens: numberFrom(payload.usageMetadata?.candidatesTokenCount),
45
+ },
46
+ finishReason: geminiFinishReason(payload),
47
+ };
48
+ }
49
+ }
50
+ function geminiApiKey(env) {
51
+ const inlineKey = env.GEMINI_API_KEY ?? env.GOOGLE_API_KEY;
52
+ if (inlineKey?.trim())
53
+ return inlineKey.trim();
54
+ const keyFile = env.GEMINI_API_KEY_FILE ?? env.GOOGLE_API_KEY_FILE;
55
+ if (!keyFile?.trim())
56
+ return undefined;
57
+ const resolvedPath = resolve(keyFile.trim());
58
+ if (!isAbsolute(keyFile.trim()) || resolvedPath !== keyFile.trim()) {
59
+ throw new Error("GEMINI_API_KEY_FILE must be an absolute path");
60
+ }
61
+ return readFileSync(resolvedPath, "utf8").trim();
62
+ }
63
+ function geminiGenerateContentEndpoint(baseUrl, model) {
64
+ const value = baseUrl?.trim() || "https://generativelanguage.googleapis.com";
65
+ const url = new URL(value);
66
+ if (url.protocol !== "https:") {
67
+ throw new Error("GEMINI_BASE_URL must use https");
68
+ }
69
+ return new URL(joinUrlPath(url.pathname, `v1beta/models/${model}:generateContent`), url.origin).toString();
70
+ }
71
+ function geminiRequestBody(request) {
72
+ const systemText = request.messages
73
+ .filter((message) => message.role === "system")
74
+ .map((message) => message.content)
75
+ .join("\n\n");
76
+ const contents = request.messages
77
+ .filter((message) => message.role !== "system")
78
+ .map((message) => ({
79
+ role: message.role === "assistant" ? "model" : "user",
80
+ parts: [{ text: message.content }],
81
+ }));
82
+ const jsonInstruction = "Return only valid JSON. Do not include markdown fences, prose, or commentary.";
83
+ return {
84
+ contents: request.jsonMode && contents.length > 0
85
+ ? [
86
+ ...contents.slice(0, -1),
87
+ {
88
+ role: contents[contents.length - 1]?.role ?? "user",
89
+ parts: [
90
+ {
91
+ text: `${contents[contents.length - 1]?.parts[0]?.text ?? ""}\n\n${jsonInstruction}`,
92
+ },
93
+ ],
94
+ },
95
+ ]
96
+ : contents,
97
+ ...(systemText
98
+ ? { systemInstruction: { parts: [{ text: systemText }] } }
99
+ : {}),
100
+ generationConfig: {
101
+ ...(request.maxTokens ? { maxOutputTokens: request.maxTokens } : {}),
102
+ ...(request.temperature !== undefined
103
+ ? { temperature: request.temperature }
104
+ : {}),
105
+ ...(request.jsonMode ? { responseMimeType: "application/json" } : {}),
106
+ },
107
+ };
108
+ }
109
+ function geminiOutputText(payload) {
110
+ const parts = payload.candidates?.[0]?.content?.parts ?? [];
111
+ return parts
112
+ .map((part) => (typeof part.text === "string" ? part.text : ""))
113
+ .join("");
114
+ }
115
+ function geminiFinishReason(payload) {
116
+ const reason = payload.candidates?.[0]?.finishReason;
117
+ if (reason === "MAX_TOKENS")
118
+ return "length";
119
+ if (reason === "MALFORMED_FUNCTION_CALL")
120
+ return "error";
121
+ return "stop";
122
+ }
123
+ function joinUrlPath(basePath, segment) {
124
+ return `${basePath.replace(/\/+$/, "")}/${segment}`.replace(/^\/?/, "/");
125
+ }
126
+ function stringFrom(value, fallback) {
127
+ return typeof value === "string" && value ? value : fallback;
128
+ }
129
+ function numberFrom(value) {
130
+ return typeof value === "number" ? value : 0;
131
+ }
132
+ //# sourceMappingURL=gemini-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-provider.js","sourceRoot":"","sources":["../src/gemini-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { AgentLessonInput } from "./types.js";
2
+ export interface AssistedAgentLessonInput {
3
+ taskId?: string;
4
+ role?: string;
5
+ operation: string;
6
+ failedAction: string;
7
+ error?: string;
8
+ errorSignature?: string;
9
+ rootCause: string;
10
+ fix: string;
11
+ prevention: string;
12
+ appliesTo: string[];
13
+ verifiedBy: string[];
14
+ }
15
+ export interface AssistedAgentLessonDraft {
16
+ value: AgentLessonInput;
17
+ redacted: boolean;
18
+ }
19
+ export declare function createAssistedAgentLessonDraft(input: AssistedAgentLessonInput): AssistedAgentLessonDraft;
@@ -0,0 +1,70 @@
1
+ import { removeUndefined } from "./command-utils.js";
2
+ import { redactTelemetryData } from "./telemetry-redaction.js";
3
+ export function createAssistedAgentLessonDraft(input) {
4
+ if (input.verifiedBy.length === 0) {
5
+ throw new Error("assisted lesson requires --verified-by");
6
+ }
7
+ if (!input.error && !input.errorSignature) {
8
+ throw new Error("assisted lesson requires --error or --error-signature");
9
+ }
10
+ const errorSignature = input.errorSignature ?? summarizeFailureSignature(input.error ?? "");
11
+ return redactLessonInput(removeUndefined({
12
+ taskId: input.taskId,
13
+ actor: input.role ?? "parent",
14
+ operation: input.operation,
15
+ failedAction: input.failedAction,
16
+ errorSignature,
17
+ rootCause: input.rootCause,
18
+ fix: input.fix,
19
+ prevention: input.prevention,
20
+ appliesTo: input.appliesTo,
21
+ verifiedBy: input.verifiedBy,
22
+ }));
23
+ }
24
+ function redactLessonInput(input) {
25
+ const result = redactTelemetryData(input);
26
+ const value = redactSecretAssignments(result.value);
27
+ return {
28
+ value,
29
+ redacted: result.report.redactedFields.length > 0 ||
30
+ result.report.blockedFields.length > 0 ||
31
+ JSON.stringify(value) !== JSON.stringify(result.value),
32
+ };
33
+ }
34
+ function redactSecretAssignments(input) {
35
+ return {
36
+ ...input,
37
+ operation: redactSensitiveText(input.operation),
38
+ failedAction: redactSensitiveText(input.failedAction),
39
+ errorSignature: redactSensitiveText(input.errorSignature),
40
+ rootCause: redactSensitiveText(input.rootCause),
41
+ fix: redactSensitiveText(input.fix),
42
+ prevention: redactSensitiveText(input.prevention),
43
+ appliesTo: input.appliesTo.map(redactSensitiveText),
44
+ verifiedBy: input.verifiedBy.map(redactSensitiveText),
45
+ };
46
+ }
47
+ function summarizeFailureSignature(error) {
48
+ const compact = error
49
+ .split("\n")
50
+ .map((line) => line.trim())
51
+ .find(Boolean);
52
+ return compact ? summarize(redactSensitiveText(compact), 160) : "unknown";
53
+ }
54
+ function redactSensitiveText(value) {
55
+ return value
56
+ .replace(/sk-[A-Za-z0-9_-]{8,}/g, "[REDACTED]")
57
+ .replace(/gh[pousr]_[A-Za-z0-9_]{8,}/g, "[REDACTED]")
58
+ .replace(/github_pat_[A-Za-z0-9_]{8,}/g, "[REDACTED]")
59
+ .replace(/xox[baprs]-[A-Za-z0-9-]{8,}/g, "[REDACTED]")
60
+ .replace(/Bearer\s+[A-Za-z0-9._-]+/gi, "Bearer [REDACTED]")
61
+ .replace(/https:\/\/hooks\.slack\.com\/services\/\S+/g, "[REDACTED]")
62
+ .replace(/(?:secret|token|password)=\S+/gi, "$1=[REDACTED]");
63
+ }
64
+ function summarize(value, limit) {
65
+ const compact = value.replace(/\s+/g, " ").trim();
66
+ return compact.length > limit
67
+ ? `${compact.slice(0, Math.max(0, limit - 3))}...`
68
+ : compact;
69
+ }
70
+ //# sourceMappingURL=lesson-assist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lesson-assist.js","sourceRoot":"","sources":["../src/lesson-assist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAsB/D,MAAM,UAAU,8BAA8B,CAC5C,KAA+B;IAE/B,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,cAAc,GAClB,KAAK,CAAC,cAAc,IAAI,yBAAyB,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACvE,OAAO,iBAAiB,CACtB,eAAe,CAAC;QACd,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,QAAQ;QAC7B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,cAAc;QACd,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAuB;IAChD,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO;QACL,KAAK;QACL,QAAQ,EACN,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAuB;IACtD,OAAO;QACL,GAAG,KAAK;QACR,SAAS,EAAE,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC;QAC/C,YAAY,EAAE,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC;QACrD,cAAc,EAAE,mBAAmB,CAAC,KAAK,CAAC,cAAc,CAAC;QACzD,SAAS,EAAE,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC;QAC/C,GAAG,EAAE,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC;QACnC,UAAU,EAAE,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC;QACjD,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACnD,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,mBAAmB,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAa;IAC9C,MAAM,OAAO,GAAG,KAAK;SAClB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,IAAI,CAAC,OAAO,CAAC,CAAC;IACjB,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5E,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK;SACT,OAAO,CAAC,uBAAuB,EAAE,YAAY,CAAC;SAC9C,OAAO,CAAC,6BAA6B,EAAE,YAAY,CAAC;SACpD,OAAO,CAAC,8BAA8B,EAAE,YAAY,CAAC;SACrD,OAAO,CAAC,8BAA8B,EAAE,YAAY,CAAC;SACrD,OAAO,CAAC,4BAA4B,EAAE,mBAAmB,CAAC;SAC1D,OAAO,CAAC,6CAA6C,EAAE,YAAY,CAAC;SACpE,OAAO,CAAC,iCAAiC,EAAE,eAAe,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,KAAa;IAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,OAAO,OAAO,CAAC,MAAM,GAAG,KAAK;QAC3B,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK;QAClD,CAAC,CAAC,OAAO,CAAC;AACd,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { type PromptRegistryFileName } from "./prompt-registry.js";
2
+ export interface MemoryCategoryStatus {
3
+ register: PromptRegistryFileName;
4
+ entries: number;
5
+ latestUpdatedAt?: string;
6
+ artifacts: string[];
7
+ }
8
+ export interface MemoryStatusReport {
9
+ workspaceRoot: string;
10
+ workflowScaffold: "missing" | "present";
11
+ lessonScaffold: "missing" | "empty" | "populated";
12
+ promptRegistryScaffold: "missing" | "empty" | "populated";
13
+ lessonCount: number;
14
+ latestLessonAt?: string;
15
+ promptEntryCount: number;
16
+ latestPromptUpdatedAt?: string;
17
+ promptEntriesByCategory: MemoryCategoryStatus[];
18
+ gaps: string[];
19
+ recommendations: string[];
20
+ }
21
+ export declare function getMemoryStatus(root?: string): Promise<MemoryStatusReport>;
22
+ export declare function renderMemoryStatus(report: MemoryStatusReport): string;
@@ -0,0 +1,139 @@
1
+ import { readdir, readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { FILES } from "./constants.js";
4
+ import { exists, resolveWorkflowPath } from "./fs-utils.js";
5
+ import { PROMPT_REGISTRY_DIR, PROMPT_REGISTRY_FOOTER, promptRegistryFileNames, } from "./prompt-registry.js";
6
+ export async function getMemoryStatus(root = process.cwd()) {
7
+ const workflowPresent = await exists(path.join(root, ".agent-workflow"));
8
+ const lessons = await readLessons(root);
9
+ const promptEntries = await readPromptRegistryEntries(root);
10
+ const categories = promptRegistryFileNames().map((register) => categoryStatus(register, promptEntries));
11
+ const promptEntryCount = promptEntries.length;
12
+ const gaps = detectGaps({
13
+ workflowPresent,
14
+ lessons,
15
+ promptEntryCount,
16
+ categories,
17
+ });
18
+ return {
19
+ workspaceRoot: root,
20
+ workflowScaffold: workflowPresent ? "present" : "missing",
21
+ lessonScaffold: scaffoldStatus(await exists(resolveWorkflowPath(root, FILES.agentLessons)), lessons.length),
22
+ promptRegistryScaffold: scaffoldStatus(await exists(path.join(root, PROMPT_REGISTRY_DIR)), promptEntryCount),
23
+ lessonCount: lessons.length,
24
+ ...latest("latestLessonAt", lessons.map((lesson) => lesson.timestamp)),
25
+ promptEntryCount,
26
+ ...latest("latestPromptUpdatedAt", promptEntries.map((entry) => entry.updatedAt)),
27
+ promptEntriesByCategory: categories,
28
+ gaps,
29
+ recommendations: recommendationsFor(gaps),
30
+ };
31
+ }
32
+ export function renderMemoryStatus(report) {
33
+ return [
34
+ "# Memory Status",
35
+ "",
36
+ `- Workflow scaffold: ${report.workflowScaffold}`,
37
+ `- Lessons: ${report.lessonCount} (${report.lessonScaffold})`,
38
+ `- Prompt entries: ${report.promptEntryCount} (${report.promptRegistryScaffold})`,
39
+ `- Latest lesson: ${report.latestLessonAt ?? "none"}`,
40
+ `- Latest prompt update: ${report.latestPromptUpdatedAt ?? "none"}`,
41
+ "",
42
+ "## Prompt Registers",
43
+ ...report.promptEntriesByCategory.map((item) => `- ${item.register}: ${item.entries} entries; latest=${item.latestUpdatedAt ?? "none"}`),
44
+ "",
45
+ "## Gaps",
46
+ ...(report.gaps.length > 0
47
+ ? report.gaps.map((gap) => `- ${gap}`)
48
+ : ["- none"]),
49
+ "",
50
+ "## Recommendations",
51
+ ...report.recommendations.map((item) => `- ${item}`),
52
+ ].join("\n");
53
+ }
54
+ async function readLessons(root) {
55
+ const file = resolveWorkflowPath(root, FILES.agentLessons);
56
+ if (!(await exists(file)))
57
+ return [];
58
+ return (await readFile(file, "utf8"))
59
+ .split("\n")
60
+ .filter((line) => line.trim() !== "")
61
+ .map((line) => JSON.parse(line));
62
+ }
63
+ async function readPromptRegistryEntries(root) {
64
+ const registryRoot = path.join(root, PROMPT_REGISTRY_DIR);
65
+ if (!(await exists(registryRoot)))
66
+ return [];
67
+ const files = (await readdir(registryRoot)).filter((file) => file.endsWith(".md"));
68
+ const entries = [];
69
+ for (const file of files) {
70
+ const content = await readFile(path.join(registryRoot, file), "utf8");
71
+ const maintained = content.split(PROMPT_REGISTRY_FOOTER)[1] ?? "";
72
+ for (const section of maintained.split(/\n(?=##\s+)/)) {
73
+ const match = /^##\s+(.+)\n([\s\S]*)$/.exec(section.trim());
74
+ if (!match)
75
+ continue;
76
+ entries.push({
77
+ register: file,
78
+ artifact: match[1]?.trim() ?? "unknown",
79
+ ...extractUpdatedAt(match[2] ?? ""),
80
+ });
81
+ }
82
+ }
83
+ return entries;
84
+ }
85
+ function categoryStatus(register, entries) {
86
+ const matching = entries.filter((entry) => entry.register === register);
87
+ return {
88
+ register,
89
+ entries: matching.length,
90
+ ...latest("latestUpdatedAt", matching.map((entry) => entry.updatedAt)),
91
+ artifacts: matching.map((entry) => entry.artifact).sort(),
92
+ };
93
+ }
94
+ function scaffoldStatus(existsOnDisk, count) {
95
+ if (!existsOnDisk)
96
+ return "missing";
97
+ return count > 0 ? "populated" : "empty";
98
+ }
99
+ function extractUpdatedAt(body) {
100
+ const match = /^- \*\*Updated:\*\* (.+)$/m.exec(body);
101
+ return match?.[1] ? { updatedAt: match[1].trim() } : {};
102
+ }
103
+ function latest(key, values) {
104
+ const dates = values.filter((item) => Boolean(item)).sort();
105
+ const value = dates.at(-1);
106
+ return value ? { [key]: value } : {};
107
+ }
108
+ function detectGaps({ workflowPresent, lessons, promptEntryCount, categories, }) {
109
+ const gaps = [];
110
+ if (!workflowPresent)
111
+ gaps.push("workflow scaffold is missing");
112
+ if (lessons.length === 0)
113
+ gaps.push("no real lesson records found");
114
+ if (promptEntryCount === 0)
115
+ gaps.push("no real prompt registry entries found");
116
+ for (const category of categories.filter((item) => item.entries === 0)) {
117
+ gaps.push(`prompt register ${category.register} has no entries`);
118
+ }
119
+ return gaps;
120
+ }
121
+ function recommendationsFor(gaps) {
122
+ if (gaps.length === 0) {
123
+ return [
124
+ "Memory is active; keep updating lessons and prompt registers during substantial changes.",
125
+ ];
126
+ }
127
+ const recommendations = new Set();
128
+ if (gaps.some((gap) => gap.includes("workflow scaffold"))) {
129
+ recommendations.add("Run `orchestra init` before auditing project memory.");
130
+ }
131
+ if (gaps.some((gap) => gap.includes("lesson"))) {
132
+ recommendations.add("Use `orchestra lessons assist` after recoverable failures.");
133
+ }
134
+ if (gaps.some((gap) => gap.includes("prompt"))) {
135
+ recommendations.add("Use `orchestra prompts update` after substantial artifact changes.");
136
+ }
137
+ return Array.from(recommendations);
138
+ }
139
+ //# sourceMappingURL=memory-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-status.js","sourceRoot":"","sources":["../src/memory-status.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import type { ConfiguredProviderSummary, ModelProvider, ModelProviderCapabilities, ModelRequest, ModelResponse, ProviderPolicyConfig, WorkflowConfig } from "./types.js";
2
+ export { GeminiModelProvider } from "./gemini-provider.js";
3
+ export { OllamaModelProvider } from "./ollama-provider.js";
2
4
  export declare class InMemoryModelProviderRegistry {
3
5
  private readonly providers;
4
6
  register(provider: ModelProvider): void;
@@ -1,3 +1,7 @@
1
+ import { GeminiModelProvider } from "./gemini-provider.js";
2
+ import { OllamaModelProvider } from "./ollama-provider.js";
3
+ export { GeminiModelProvider } from "./gemini-provider.js";
4
+ export { OllamaModelProvider } from "./ollama-provider.js";
1
5
  const defaultCapabilities = {
2
6
  streaming: false,
3
7
  tools: false,
@@ -32,6 +36,10 @@ export function createModelProvider(providerId) {
32
36
  return new OpenAIModelProvider();
33
37
  if (providerId === "anthropic")
34
38
  return new AnthropicModelProvider();
39
+ if (providerId === "gemini")
40
+ return new GeminiModelProvider();
41
+ if (providerId === "ollama")
42
+ return new OllamaModelProvider();
35
43
  throw new Error(`unknown provider: ${providerId}`);
36
44
  }
37
45
  export function assertProviderAllowed(providerId, policy) {
@@ -1 +1 @@
1
- {"version":3,"file":"model-providers.js","sourceRoot":"","sources":["../src/model-providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-providers.js","sourceRoot":"","sources":["../src/model-providers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { ModelProvider, ModelProviderCapabilities, ModelRequest, ModelResponse } from "./types.js";
2
+ export declare class OllamaModelProvider implements ModelProvider {
3
+ readonly id = "ollama";
4
+ readonly capabilities: ModelProviderCapabilities;
5
+ private readonly fetchFn;
6
+ private readonly env;
7
+ constructor({ fetchFn, env, }?: {
8
+ fetchFn?: typeof fetch;
9
+ env?: NodeJS.ProcessEnv;
10
+ });
11
+ complete(request: ModelRequest): Promise<ModelResponse>;
12
+ }
@@ -0,0 +1,86 @@
1
+ export class OllamaModelProvider {
2
+ id = "ollama";
3
+ capabilities = {
4
+ streaming: false,
5
+ tools: false,
6
+ vision: false,
7
+ jsonMode: true,
8
+ maxContextTokens: 0,
9
+ timeoutMs: 30000,
10
+ };
11
+ fetchFn;
12
+ env;
13
+ constructor({ fetchFn = fetch, env = process.env, } = {}) {
14
+ this.fetchFn = fetchFn;
15
+ this.env = env;
16
+ }
17
+ async complete(request) {
18
+ const response = await this.fetchFn(ollamaChatCompletionsEndpoint(this.env.OLLAMA_BASE_URL), {
19
+ method: "POST",
20
+ headers: {
21
+ "content-type": "application/json",
22
+ authorization: `Bearer ${this.env.OLLAMA_API_KEY ?? "ollama"}`,
23
+ },
24
+ body: JSON.stringify(ollamaRequestBody(request)),
25
+ signal: AbortSignal.timeout(request.timeoutMs ?? this.capabilities.timeoutMs),
26
+ });
27
+ if (!response.ok) {
28
+ throw new Error(`Ollama API returned HTTP ${response.status}`);
29
+ }
30
+ const payload = (await response.json());
31
+ return {
32
+ id: stringFrom(payload.id, "ollama-response"),
33
+ provider: this.id,
34
+ model: stringFrom(payload.model, request.model),
35
+ content: stringFrom(payload.choices?.[0]?.message?.content, ""),
36
+ usage: {
37
+ inputTokens: numberFrom(payload.usage?.prompt_tokens),
38
+ outputTokens: numberFrom(payload.usage?.completion_tokens),
39
+ },
40
+ finishReason: ollamaFinishReason(payload),
41
+ };
42
+ }
43
+ }
44
+ function ollamaChatCompletionsEndpoint(baseUrl) {
45
+ const value = baseUrl?.trim() || "http://localhost:11434/v1";
46
+ const url = new URL(value);
47
+ if (url.protocol !== "http:" && url.protocol !== "https:") {
48
+ throw new Error("OLLAMA_BASE_URL must use http or https");
49
+ }
50
+ return new URL(url.pathname.endsWith("/chat/completions")
51
+ ? url.pathname
52
+ : joinUrlPath(url.pathname, "chat/completions"), url.origin).toString();
53
+ }
54
+ function ollamaRequestBody(request) {
55
+ return {
56
+ model: request.model,
57
+ stream: false,
58
+ messages: request.messages.map((message) => ({
59
+ role: message.role === "tool" ? "user" : message.role,
60
+ content: message.content,
61
+ })),
62
+ ...(request.maxTokens ? { max_tokens: request.maxTokens } : {}),
63
+ ...(request.temperature !== undefined
64
+ ? { temperature: request.temperature }
65
+ : {}),
66
+ ...(request.jsonMode ? { response_format: { type: "json_object" } } : {}),
67
+ };
68
+ }
69
+ function ollamaFinishReason(payload) {
70
+ const reason = payload.choices?.[0]?.finish_reason;
71
+ if (reason === "length")
72
+ return "length";
73
+ if (reason === "tool_calls")
74
+ return "tool_call";
75
+ return "stop";
76
+ }
77
+ function joinUrlPath(basePath, segment) {
78
+ return `${basePath.replace(/\/+$/, "")}/${segment}`.replace(/^\/?/, "/");
79
+ }
80
+ function stringFrom(value, fallback) {
81
+ return typeof value === "string" && value ? value : fallback;
82
+ }
83
+ function numberFrom(value) {
84
+ return typeof value === "number" ? value : 0;
85
+ }
86
+ //# sourceMappingURL=ollama-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama-provider.js","sourceRoot":"","sources":["../src/ollama-provider.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { CliIo, CliOptions } from "./types.js";
2
2
  export declare function delegationDecideCommand(options: CliOptions, io: CliIo): Promise<void>;
3
3
  export declare function contextCommand(options: CliOptions, io: CliIo): Promise<void>;
4
4
  export declare function memoryQueryCommand(options: CliOptions, io: CliIo): Promise<void>;
5
+ export declare function memoryStatusCommand(options: CliOptions, io: CliIo): Promise<void>;
5
6
  export declare function memoryHookCommand(options: CliOptions, io: CliIo): Promise<void>;
6
7
  export declare function planCommand(options: CliOptions, io: CliIo): Promise<void>;
7
8
  export declare function runCommand(options: CliOptions, io: CliIo): Promise<void>;
@@ -1,6 +1,7 @@
1
1
  import { requireArg } from "./args.js";
2
2
  import { numberOption, parseSkillRenderTarget, removeUndefined, stringOption, } from "./command-utils.js";
3
3
  import { queryMemory, recordMemoryEvent, renderMemoryPacket, } from "./memory.js";
4
+ import { getMemoryStatus, renderMemoryStatus } from "./memory-status.js";
4
5
  import { decideTaskDelegation } from "./delegation-decision.js";
5
6
  import { listCollaborationFlows, recommendCollaborationFlow, } from "./collaboration-flows.js";
6
7
  import { listWorkflowTemplates, renderWorkflowTemplates, selectWorkflowTemplates, validateWorkflowTemplates, } from "./workflow-templates.js";
@@ -51,6 +52,14 @@ export async function memoryQueryCommand(options, io) {
51
52
  }
52
53
  io.log(renderMemoryPacket(packet));
53
54
  }
55
+ export async function memoryStatusCommand(options, io) {
56
+ const report = await getMemoryStatus();
57
+ if (options.json) {
58
+ io.log(JSON.stringify(report, null, 2));
59
+ return;
60
+ }
61
+ io.log(renderMemoryStatus(report));
62
+ }
54
63
  export async function memoryHookCommand(options, io) {
55
64
  const point = parseMemoryHook(requireArg(options, "point"));
56
65
  const taskId = stringOption(options.task);