@sigil0/looking-glass 0.1.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.
Files changed (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +572 -0
  3. package/dist/agents/coordinator.d.ts +21 -0
  4. package/dist/agents/coordinator.d.ts.map +1 -0
  5. package/dist/agents/coordinator.js +171 -0
  6. package/dist/agents/coordinator.js.map +1 -0
  7. package/dist/app.d.ts +44 -0
  8. package/dist/app.d.ts.map +1 -0
  9. package/dist/app.js +215 -0
  10. package/dist/app.js.map +1 -0
  11. package/dist/cli.d.ts +3 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +419 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/config.d.ts +4 -0
  16. package/dist/config.d.ts.map +1 -0
  17. package/dist/config.js +132 -0
  18. package/dist/config.js.map +1 -0
  19. package/dist/engine/context.d.ts +6 -0
  20. package/dist/engine/context.d.ts.map +1 -0
  21. package/dist/engine/context.js +65 -0
  22. package/dist/engine/context.js.map +1 -0
  23. package/dist/engine/engine.d.ts +74 -0
  24. package/dist/engine/engine.d.ts.map +1 -0
  25. package/dist/engine/engine.js +573 -0
  26. package/dist/engine/engine.js.map +1 -0
  27. package/dist/engine/types.d.ts +35 -0
  28. package/dist/engine/types.d.ts.map +1 -0
  29. package/dist/engine/types.js +2 -0
  30. package/dist/engine/types.js.map +1 -0
  31. package/dist/instructions.d.ts +8 -0
  32. package/dist/instructions.d.ts.map +1 -0
  33. package/dist/instructions.js +60 -0
  34. package/dist/instructions.js.map +1 -0
  35. package/dist/model/codex-lb.d.ts +141 -0
  36. package/dist/model/codex-lb.d.ts.map +1 -0
  37. package/dist/model/codex-lb.js +471 -0
  38. package/dist/model/codex-lb.js.map +1 -0
  39. package/dist/paths.d.ts +7 -0
  40. package/dist/paths.d.ts.map +1 -0
  41. package/dist/paths.js +41 -0
  42. package/dist/paths.js.map +1 -0
  43. package/dist/scheduler/daemon.d.ts +40 -0
  44. package/dist/scheduler/daemon.d.ts.map +1 -0
  45. package/dist/scheduler/daemon.js +189 -0
  46. package/dist/scheduler/daemon.js.map +1 -0
  47. package/dist/scheduler/index.d.ts +8 -0
  48. package/dist/scheduler/index.d.ts.map +1 -0
  49. package/dist/scheduler/index.js +6 -0
  50. package/dist/scheduler/index.js.map +1 -0
  51. package/dist/scheduler/runner.d.ts +18 -0
  52. package/dist/scheduler/runner.d.ts.map +1 -0
  53. package/dist/scheduler/runner.js +173 -0
  54. package/dist/scheduler/runner.js.map +1 -0
  55. package/dist/scheduler/schedule.d.ts +7 -0
  56. package/dist/scheduler/schedule.d.ts.map +1 -0
  57. package/dist/scheduler/schedule.js +94 -0
  58. package/dist/scheduler/schedule.js.map +1 -0
  59. package/dist/scheduler/store.d.ts +55 -0
  60. package/dist/scheduler/store.d.ts.map +1 -0
  61. package/dist/scheduler/store.js +1203 -0
  62. package/dist/scheduler/store.js.map +1 -0
  63. package/dist/scheduler/systemd.d.ts +7 -0
  64. package/dist/scheduler/systemd.d.ts.map +1 -0
  65. package/dist/scheduler/systemd.js +97 -0
  66. package/dist/scheduler/systemd.js.map +1 -0
  67. package/dist/scheduler/types.d.ts +145 -0
  68. package/dist/scheduler/types.d.ts.map +1 -0
  69. package/dist/scheduler/types.js +7 -0
  70. package/dist/scheduler/types.js.map +1 -0
  71. package/dist/security.d.ts +6 -0
  72. package/dist/security.d.ts.map +1 -0
  73. package/dist/security.js +27 -0
  74. package/dist/security.js.map +1 -0
  75. package/dist/storage/artifact-store.d.ts +19 -0
  76. package/dist/storage/artifact-store.d.ts.map +1 -0
  77. package/dist/storage/artifact-store.js +47 -0
  78. package/dist/storage/artifact-store.js.map +1 -0
  79. package/dist/storage/database.d.ts +5 -0
  80. package/dist/storage/database.d.ts.map +1 -0
  81. package/dist/storage/database.js +395 -0
  82. package/dist/storage/database.js.map +1 -0
  83. package/dist/storage/session-store.d.ts +114 -0
  84. package/dist/storage/session-store.d.ts.map +1 -0
  85. package/dist/storage/session-store.js +731 -0
  86. package/dist/storage/session-store.js.map +1 -0
  87. package/dist/tools/agents.d.ts +14 -0
  88. package/dist/tools/agents.d.ts.map +1 -0
  89. package/dist/tools/agents.js +35 -0
  90. package/dist/tools/agents.js.map +1 -0
  91. package/dist/tools/apply-patch.d.ts +7 -0
  92. package/dist/tools/apply-patch.d.ts.map +1 -0
  93. package/dist/tools/apply-patch.js +429 -0
  94. package/dist/tools/apply-patch.js.map +1 -0
  95. package/dist/tools/ask.d.ts +8 -0
  96. package/dist/tools/ask.d.ts.map +1 -0
  97. package/dist/tools/ask.js +27 -0
  98. package/dist/tools/ask.js.map +1 -0
  99. package/dist/tools/bash.d.ts +9 -0
  100. package/dist/tools/bash.d.ts.map +1 -0
  101. package/dist/tools/bash.js +98 -0
  102. package/dist/tools/bash.js.map +1 -0
  103. package/dist/tools/index.d.ts +9 -0
  104. package/dist/tools/index.d.ts.map +1 -0
  105. package/dist/tools/index.js +34 -0
  106. package/dist/tools/index.js.map +1 -0
  107. package/dist/tools/paths.d.ts +3 -0
  108. package/dist/tools/paths.d.ts.map +1 -0
  109. package/dist/tools/paths.js +34 -0
  110. package/dist/tools/paths.js.map +1 -0
  111. package/dist/tools/process.d.ts +21 -0
  112. package/dist/tools/process.d.ts.map +1 -0
  113. package/dist/tools/process.js +104 -0
  114. package/dist/tools/process.js.map +1 -0
  115. package/dist/tools/read.d.ts +9 -0
  116. package/dist/tools/read.d.ts.map +1 -0
  117. package/dist/tools/read.js +95 -0
  118. package/dist/tools/read.js.map +1 -0
  119. package/dist/tools/registry.d.ts +19 -0
  120. package/dist/tools/registry.d.ts.map +1 -0
  121. package/dist/tools/registry.js +188 -0
  122. package/dist/tools/registry.js.map +1 -0
  123. package/dist/tools/safety.d.ts +9 -0
  124. package/dist/tools/safety.d.ts.map +1 -0
  125. package/dist/tools/safety.js +199 -0
  126. package/dist/tools/safety.js.map +1 -0
  127. package/dist/tools/schedule.d.ts +4 -0
  128. package/dist/tools/schedule.d.ts.map +1 -0
  129. package/dist/tools/schedule.js +191 -0
  130. package/dist/tools/schedule.js.map +1 -0
  131. package/dist/tools/search.d.ts +16 -0
  132. package/dist/tools/search.d.ts.map +1 -0
  133. package/dist/tools/search.js +75 -0
  134. package/dist/tools/search.js.map +1 -0
  135. package/dist/tools/types.d.ts +54 -0
  136. package/dist/tools/types.d.ts.map +1 -0
  137. package/dist/tools/types.js +10 -0
  138. package/dist/tools/types.js.map +1 -0
  139. package/dist/types.d.ts +90 -0
  140. package/dist/types.d.ts.map +1 -0
  141. package/dist/types.js +2 -0
  142. package/dist/types.js.map +1 -0
  143. package/dist/ui/stdio.d.ts +5 -0
  144. package/dist/ui/stdio.d.ts.map +1 -0
  145. package/dist/ui/stdio.js +65 -0
  146. package/dist/ui/stdio.js.map +1 -0
  147. package/dist/ui/tui.d.ts +93 -0
  148. package/dist/ui/tui.d.ts.map +1 -0
  149. package/dist/ui/tui.js +2246 -0
  150. package/dist/ui/tui.js.map +1 -0
  151. package/package.json +53 -0
@@ -0,0 +1,171 @@
1
+ import { ConversationEngine } from "../engine/engine.js";
2
+ const LEAF_INSTRUCTIONS = `You are a leaf coding agent delegated one self-contained task by a parent model.
3
+ You have fresh conversation context and do not have the parent transcript. Treat the delegated task envelope as the complete handoff. Complete only that task. Inspect the workspace and use available tools as needed. Do not create agents, schedules, or ask the operator questions. Return a concise technical result to the parent, including findings or changes, validation, blockers, and any assumptions. Other agents may share the workspace, so avoid unrelated files and coordinate only through the task boundaries.`;
4
+ function taskPrompt(task) {
5
+ return [
6
+ "Delegated leaf-agent task",
7
+ `Task ID: ${task.id}`,
8
+ "Context contract: You do not have the parent conversation. Everything relevant must be present below or discovered from the workspace.",
9
+ "",
10
+ task.prompt,
11
+ "",
12
+ "Return contract: report the result, files changed, validation performed, blockers, and assumptions. Do not address the end user directly.",
13
+ ].join("\n");
14
+ }
15
+ function errorMessage(error) {
16
+ return error instanceof Error ? error.message : String(error);
17
+ }
18
+ function utf8Prefix(text, maxBytes) {
19
+ const data = Buffer.from(text);
20
+ let end = Math.min(data.length, Math.max(0, maxBytes));
21
+ const decoder = new TextDecoder("utf-8", { fatal: true });
22
+ while (end > 0) {
23
+ try {
24
+ return decoder.decode(data.subarray(0, end));
25
+ }
26
+ catch {
27
+ end -= 1;
28
+ }
29
+ }
30
+ return "";
31
+ }
32
+ export class AgentCoordinator {
33
+ config;
34
+ workspace;
35
+ sessions;
36
+ artifacts;
37
+ clientFor;
38
+ workerTools;
39
+ instructions;
40
+ modelFor;
41
+ constructor(config, workspace, sessions, artifacts, clientFor, workerTools, instructions, modelFor) {
42
+ this.config = config;
43
+ this.workspace = workspace;
44
+ this.sessions = sessions;
45
+ this.artifacts = artifacts;
46
+ this.clientFor = clientFor;
47
+ this.workerTools = workerTools;
48
+ this.instructions = instructions;
49
+ this.modelFor = modelFor;
50
+ }
51
+ createEngine() {
52
+ const sharedInstructions = typeof this.instructions === "function" ? this.instructions() : this.instructions;
53
+ return new ConversationEngine(this.config, this.workspace, this.sessions, this.artifacts, this.clientFor, this.workerTools, `${sharedInstructions}\n\n${LEAF_INSTRUCTIONS}`);
54
+ }
55
+ async run(args, context) {
56
+ const ids = new Set();
57
+ for (const task of args.tasks) {
58
+ if (ids.has(task.id))
59
+ throw new Error(`Duplicate agent task id: ${task.id}`);
60
+ ids.add(task.id);
61
+ }
62
+ const parent = this.sessions.get(context.sessionId);
63
+ if (!parent)
64
+ throw new Error(`Parent session not found: ${context.sessionId}`);
65
+ const model = await this.modelFor(parent.agentModel, parent.agentProvider, context.signal);
66
+ const concurrency = Math.min(args.concurrency ?? 4, args.tasks.length);
67
+ const results = new Array(args.tasks.length);
68
+ let cursor = 0;
69
+ const runTask = async (task, index) => {
70
+ context.signal.throwIfAborted();
71
+ const identity = `${model.provider}:${model.id} | reasoning ${parent.agentReasoningEffort}`;
72
+ context.reportProgress?.(`${identity} | agent ${task.id} [starting]`);
73
+ const child = this.sessions.create({
74
+ workspace: this.workspace,
75
+ provider: model.provider,
76
+ model: model.id,
77
+ reasoningEffort: parent.agentReasoningEffort,
78
+ agentProvider: model.provider,
79
+ agentModel: model.id,
80
+ agentReasoningEffort: parent.agentReasoningEffort,
81
+ agentsEnabled: parent.agentsEnabled,
82
+ verbosity: model.defaultVerbosity,
83
+ fast: false,
84
+ approvalMode: parent.approvalMode,
85
+ kind: "agent",
86
+ parentSessionId: parent.id,
87
+ });
88
+ this.sessions.rename(child.id, `Agent ${task.id}`);
89
+ try {
90
+ const turn = await this.createEngine().turn(child.id, taskPrompt(task), {
91
+ signal: context.signal,
92
+ interaction: {
93
+ approve: async () => "deny",
94
+ ask: async () => "",
95
+ },
96
+ callbacks: {
97
+ onStatus: (status) => context.reportProgress?.(`${identity} | agent ${task.id} [${status}]`),
98
+ },
99
+ modelInfo: model,
100
+ automated: true,
101
+ readOnly: parent.approvalMode === "review",
102
+ authorizationSessionId: context.authorizationSessionId ?? parent.id,
103
+ });
104
+ results[index] = {
105
+ id: task.id,
106
+ childSessionId: child.id,
107
+ status: "succeeded",
108
+ model: `${model.provider}:${model.id}`,
109
+ reasoningEffort: parent.agentReasoningEffort,
110
+ text: turn.text.trim() || "Agent completed without a text response.",
111
+ };
112
+ context.reportProgress?.(`${identity} | agent ${task.id} [done]`);
113
+ }
114
+ catch (error) {
115
+ if (context.signal.aborted)
116
+ throw error;
117
+ results[index] = {
118
+ id: task.id,
119
+ childSessionId: child.id,
120
+ status: "failed",
121
+ model: `${model.provider}:${model.id}`,
122
+ reasoningEffort: parent.agentReasoningEffort,
123
+ error: errorMessage(error),
124
+ };
125
+ context.reportProgress?.(`${identity} | agent ${task.id} [failed]: ${errorMessage(error)}`);
126
+ }
127
+ };
128
+ const workers = Array.from({ length: concurrency }, async () => {
129
+ while (true) {
130
+ const index = cursor;
131
+ cursor += 1;
132
+ const task = args.tasks[index];
133
+ if (!task)
134
+ return;
135
+ await runTask(task, index);
136
+ }
137
+ });
138
+ const settled = await Promise.allSettled(workers);
139
+ context.signal.throwIfAborted();
140
+ const failedWorker = settled.find((result) => result.status === "rejected");
141
+ if (failedWorker)
142
+ throw failedWorker.reason;
143
+ const fullOutput = [
144
+ `Agent batch completed with ${model.provider}:${model.id} | reasoning ${parent.agentReasoningEffort}`,
145
+ ...results.map((result) => [
146
+ `\n## ${result.id} [${result.status}]`,
147
+ `child_session_id: ${result.childSessionId}`,
148
+ `model: ${result.model}`,
149
+ `reasoning: ${result.reasoningEffort}`,
150
+ result.status === "succeeded" ? result.text : `error: ${result.error}`,
151
+ ].join("\n")),
152
+ ].join("\n");
153
+ const limit = this.config.tools.maxOutputBytes;
154
+ if (Buffer.byteLength(fullOutput) <= limit)
155
+ return { output: fullOutput };
156
+ const artifact = this.artifacts.save(parent.id, "agent-results", fullOutput, {
157
+ model: `${model.provider}:${model.id}`,
158
+ reasoningEffort: parent.agentReasoningEffort,
159
+ taskCount: args.tasks.length,
160
+ });
161
+ const suffix = `\n\nFull agent results: ${artifact.uri}`;
162
+ const bounded = utf8Prefix(fullOutput, Math.max(0, limit - Buffer.byteLength(suffix)));
163
+ return {
164
+ output: `${bounded}${suffix}`,
165
+ display: `Agent batch completed; full results saved to ${artifact.uri}`,
166
+ artifactUri: artifact.uri,
167
+ truncated: true,
168
+ };
169
+ }
170
+ }
171
+ //# sourceMappingURL=coordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../src/agents/coordinator.ts"],"names":[],"mappings":"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"}
package/dist/app.d.ts ADDED
@@ -0,0 +1,44 @@
1
+ import type { GlassDatabase } from "./storage/database.js";
2
+ import { ArtifactStore } from "./storage/artifact-store.js";
3
+ import { SessionStore } from "./storage/session-store.js";
4
+ import { type LoadedInstructions } from "./instructions.js";
5
+ import { CodexLbClient } from "./model/codex-lb.js";
6
+ import { type ToolRegistry } from "./tools/index.js";
7
+ import { ConversationEngine } from "./engine/engine.js";
8
+ import { AgentCoordinator } from "./agents/coordinator.js";
9
+ import type { GatewayModel, GatewayProvider, GlassConfig, ModelInfo, SessionRecord } from "./types.js";
10
+ import { SchedulerStore } from "./scheduler/store.js";
11
+ export declare class LookingGlassApp {
12
+ readonly workspace: string;
13
+ readonly config: GlassConfig;
14
+ readonly db: GlassDatabase;
15
+ readonly sessions: SessionStore;
16
+ readonly artifacts: ArtifactStore;
17
+ readonly client: CodexLbClient;
18
+ readonly clients: Map<GatewayProvider, CodexLbClient>;
19
+ readonly scheduler: SchedulerStore;
20
+ readonly tools: ToolRegistry;
21
+ readonly agents: AgentCoordinator;
22
+ readonly instructions: LoadedInstructions;
23
+ readonly engine: ConversationEngine;
24
+ private readonly modelCache;
25
+ private readonly modelCacheTimes;
26
+ private readonly modelRequests;
27
+ private readonly modelFailures;
28
+ private readonly modelCatalogTimeoutMs;
29
+ private readonly modelCacheTtlMs;
30
+ constructor(cwd?: string);
31
+ configuredProviders(): GatewayProvider[];
32
+ hasProvider(provider: GatewayProvider): boolean;
33
+ clientForProvider(provider: GatewayProvider): CodexLbClient;
34
+ private probeGateway;
35
+ modelsForProvider(provider: GatewayProvider, refresh?: boolean, signal?: AbortSignal): Promise<ModelInfo[]>;
36
+ private catalogModelsForProvider;
37
+ models(refresh?: boolean, signal?: AbortSignal): Promise<GatewayModel[]>;
38
+ catalogModel(id: string, provider: GatewayProvider, signal?: AbortSignal): Promise<GatewayModel>;
39
+ model(id: string, signal?: AbortSignal, provider?: GatewayProvider): Promise<GatewayModel>;
40
+ createSession(signal?: AbortSignal): Promise<SessionRecord>;
41
+ currentOrNewSession(id?: string, signal?: AbortSignal): Promise<SessionRecord>;
42
+ close(): void;
43
+ }
44
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAe,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAoD,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACvG,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACvG,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAOtD,qBAAa,eAAe;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2C;IACtE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IACtE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoD;IAClF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsC;IACpE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA4B;IAClE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsB;gBAE1C,GAAG,SAAgB;IAoC/B,mBAAmB,IAAI,eAAe,EAAE;IAIxC,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO;IAI/C,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,aAAa;YAM7C,YAAY;IA8BpB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,UAAQ,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;YAiBjG,wBAAwB;IA8BhC,MAAM,CAAC,OAAO,UAAQ,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAYtE,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAOhG,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;IAW1F,aAAa,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAsB3D,mBAAmB,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAepF,KAAK,IAAI,IAAI;CAId"}
package/dist/app.js ADDED
@@ -0,0 +1,215 @@
1
+ import { createConnection } from "node:net";
2
+ import { checkpointDatabase, openDatabase } from "./storage/database.js";
3
+ import { ArtifactStore } from "./storage/artifact-store.js";
4
+ import { SessionStore } from "./storage/session-store.js";
5
+ import { artifactsDir, ensureStateDirectories, findWorkspaceRoot, stateDbPath } from "./paths.js";
6
+ import { loadConfig } from "./config.js";
7
+ import { loadInstructions } from "./instructions.js";
8
+ import { CodexLbClient, chooseModel } from "./model/codex-lb.js";
9
+ import { createCoreToolRegistry, createWorkerToolRegistry } from "./tools/index.js";
10
+ import { ConversationEngine } from "./engine/engine.js";
11
+ import { AgentCoordinator } from "./agents/coordinator.js";
12
+ import { SchedulerStore } from "./scheduler/store.js";
13
+ const MODEL_CATALOG_TIMEOUT_MS = 2_000;
14
+ const MODEL_FAILURE_COOLDOWN_MS = 30_000;
15
+ const MODEL_CACHE_TTL_MS = 30_000;
16
+ const GATEWAY_PROBE_TIMEOUT_MS = 500;
17
+ export class LookingGlassApp {
18
+ workspace;
19
+ config;
20
+ db;
21
+ sessions;
22
+ artifacts;
23
+ client;
24
+ clients;
25
+ scheduler;
26
+ tools;
27
+ agents;
28
+ instructions;
29
+ engine;
30
+ modelCache = new Map();
31
+ modelCacheTimes = new Map();
32
+ modelRequests = new Map();
33
+ modelFailures = new Map();
34
+ modelCatalogTimeoutMs = MODEL_CATALOG_TIMEOUT_MS;
35
+ modelCacheTtlMs = MODEL_CACHE_TTL_MS;
36
+ constructor(cwd = process.cwd()) {
37
+ ensureStateDirectories();
38
+ this.workspace = findWorkspaceRoot(cwd);
39
+ this.config = loadConfig(this.workspace);
40
+ this.db = openDatabase(stateDbPath());
41
+ this.sessions = new SessionStore(this.db);
42
+ this.artifacts = new ArtifactStore(this.db, artifactsDir());
43
+ this.scheduler = new SchedulerStore(this.db);
44
+ this.clients = new Map([this.config.gateway, ...this.config.gateways].map((gateway) => {
45
+ const providerConfig = { ...this.config, gateway };
46
+ return [gateway.provider, new CodexLbClient(providerConfig)];
47
+ }));
48
+ this.client = this.clientForProvider(this.config.gateway.provider);
49
+ this.instructions = loadInstructions(this.workspace, this.config);
50
+ this.agents = new AgentCoordinator(this.config, this.workspace, this.sessions, this.artifacts, (provider) => this.clientForProvider(provider), createWorkerToolRegistry(), () => loadInstructions(this.workspace, this.config).text, (id, provider, signal) => this.catalogModel(id, provider, signal));
51
+ this.tools = createCoreToolRegistry(this.scheduler, this.agents);
52
+ this.engine = new ConversationEngine(this.config, this.workspace, this.sessions, this.artifacts, (provider) => this.clientForProvider(provider), this.tools, this.instructions.text);
53
+ }
54
+ configuredProviders() {
55
+ return [...this.clients.keys()];
56
+ }
57
+ hasProvider(provider) {
58
+ return this.clients.has(provider);
59
+ }
60
+ clientForProvider(provider) {
61
+ const client = this.clients.get(provider);
62
+ if (!client)
63
+ throw new Error(`Gateway provider is not configured: ${provider}`);
64
+ return client;
65
+ }
66
+ async probeGateway(provider, signal) {
67
+ signal?.throwIfAborted();
68
+ const gateway = [this.config.gateway, ...this.config.gateways]
69
+ .find((candidate) => candidate.provider === provider);
70
+ if (!gateway)
71
+ throw new Error(`Gateway provider is not configured: ${provider}`);
72
+ const url = new URL(gateway.baseURL);
73
+ const port = url.port ? Number(url.port) : url.protocol === "https:" ? 443 : 80;
74
+ await new Promise((resolve, reject) => {
75
+ const socket = createConnection({ host: url.hostname, port });
76
+ let settled = false;
77
+ const finish = (error) => {
78
+ if (settled)
79
+ return;
80
+ settled = true;
81
+ clearTimeout(timer);
82
+ signal?.removeEventListener("abort", abort);
83
+ socket.destroy();
84
+ if (error)
85
+ reject(error);
86
+ else
87
+ resolve();
88
+ };
89
+ const abort = () => finish(signal?.reason instanceof Error ? signal.reason : new Error("Aborted"));
90
+ const timer = setTimeout(() => {
91
+ finish(new Error(`Gateway model catalog probe timed out: ${provider}`));
92
+ }, GATEWAY_PROBE_TIMEOUT_MS);
93
+ socket.once("connect", () => finish());
94
+ socket.once("error", (error) => finish(error));
95
+ signal?.addEventListener("abort", abort, { once: true });
96
+ if (signal?.aborted)
97
+ abort();
98
+ });
99
+ }
100
+ async modelsForProvider(provider, refresh = false, signal) {
101
+ const cached = this.modelCache.get(provider);
102
+ if (cached && !refresh)
103
+ return cached;
104
+ const pending = this.modelRequests.get(provider);
105
+ if (pending)
106
+ return pending;
107
+ const request = this.clientForProvider(provider).models(signal).then((models) => {
108
+ this.modelCache.set(provider, models);
109
+ this.modelCacheTimes.set(provider, Date.now());
110
+ this.modelFailures.delete(provider);
111
+ return models;
112
+ }).finally(() => {
113
+ if (this.modelRequests.get(provider) === request)
114
+ this.modelRequests.delete(provider);
115
+ });
116
+ this.modelRequests.set(provider, request);
117
+ return request;
118
+ }
119
+ async catalogModelsForProvider(provider, refresh = false, signal) {
120
+ const cacheTime = this.modelCacheTimes.get(provider) ?? 0;
121
+ const stale = !this.modelCache.has(provider) || Date.now() - cacheTime >= this.modelCacheTtlMs;
122
+ const failedAt = this.modelFailures.get(provider);
123
+ if (!refresh && stale && failedAt !== undefined
124
+ && Date.now() - failedAt < MODEL_FAILURE_COOLDOWN_MS) {
125
+ throw new Error(`Gateway model catalog is temporarily unavailable: ${provider}`);
126
+ }
127
+ const timeout = AbortSignal.timeout(this.modelCatalogTimeoutMs);
128
+ const requestSignal = signal ? AbortSignal.any([signal, timeout]) : timeout;
129
+ try {
130
+ if (stale && !this.modelRequests.has(provider)) {
131
+ await this.probeGateway(provider, requestSignal);
132
+ }
133
+ return (await this.modelsForProvider(provider, refresh || stale, requestSignal))
134
+ .map((model) => ({ ...model, provider }));
135
+ }
136
+ catch (error) {
137
+ if (!signal?.aborted) {
138
+ this.modelCache.delete(provider);
139
+ this.modelCacheTimes.delete(provider);
140
+ this.modelFailures.set(provider, Date.now());
141
+ }
142
+ throw error;
143
+ }
144
+ }
145
+ async models(refresh = false, signal) {
146
+ const results = await Promise.allSettled(this.configuredProviders().map((provider) => {
147
+ return this.catalogModelsForProvider(provider, refresh, signal);
148
+ }));
149
+ const models = results.flatMap((result) => result.status === "fulfilled" ? result.value : []);
150
+ if (models.length === 0) {
151
+ const failure = results.find((result) => result.status === "rejected");
152
+ throw failure?.reason ?? new Error("No configured gateway returned a model");
153
+ }
154
+ return models;
155
+ }
156
+ async catalogModel(id, provider, signal) {
157
+ const models = await this.catalogModelsForProvider(provider, false, signal);
158
+ const match = models.find((model) => model.id === id);
159
+ if (!match)
160
+ throw new Error(`Model is not available: ${provider}:${id}`);
161
+ return match;
162
+ }
163
+ async model(id, signal, provider) {
164
+ const candidates = provider
165
+ ? (await this.modelsForProvider(provider, false, signal)).map((model) => ({ ...model, provider }))
166
+ : await this.models(false, signal);
167
+ const matches = candidates.filter((model) => model.id === id);
168
+ if (matches.length > 1)
169
+ throw new Error(`Model id is ambiguous across gateways: ${id}`);
170
+ const match = matches[0];
171
+ if (!match)
172
+ throw new Error(`Model is not available: ${id}`);
173
+ return match;
174
+ }
175
+ async createSession(signal) {
176
+ const model = chooseModel(await this.modelsForProvider(this.config.gateway.provider, false, signal), this.config.model);
177
+ const effort = model.reasoningEfforts.includes(this.config.reasoningEffort)
178
+ ? this.config.reasoningEffort
179
+ : model.defaultReasoningEffort;
180
+ return this.sessions.create({
181
+ workspace: this.workspace,
182
+ provider: this.config.gateway.provider,
183
+ model: model.id,
184
+ reasoningEffort: effort,
185
+ agentProvider: this.config.gateway.provider,
186
+ agentModel: model.id,
187
+ agentReasoningEffort: effort,
188
+ verbosity: this.config.verbosity,
189
+ fast: this.config.fast && model.supportsFast,
190
+ approvalMode: this.config.tools.approval,
191
+ });
192
+ }
193
+ async currentOrNewSession(id, signal) {
194
+ if (id) {
195
+ const session = this.sessions.get(id);
196
+ if (!session)
197
+ throw new Error(`Session not found: ${id}`);
198
+ if (session.kind !== "interactive")
199
+ throw new Error(`Session is not interactive: ${id}`);
200
+ if (session.workspace !== this.workspace) {
201
+ throw new Error(`Session belongs to ${session.workspace}; launch Looking Glass from that workspace`);
202
+ }
203
+ if (!this.hasProvider(session.provider))
204
+ throw new Error(`Session provider is not configured: ${session.provider}`);
205
+ return session;
206
+ }
207
+ return this.sessions.listWithMessages(this.workspace, 100)
208
+ .find((session) => this.hasProvider(session.provider)) ?? this.createSession(signal);
209
+ }
210
+ close() {
211
+ checkpointDatabase(this.db);
212
+ this.db.close();
213
+ }
214
+ }
215
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}