@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.
- package/LICENSE +21 -0
- package/README.md +572 -0
- package/dist/agents/coordinator.d.ts +21 -0
- package/dist/agents/coordinator.d.ts.map +1 -0
- package/dist/agents/coordinator.js +171 -0
- package/dist/agents/coordinator.js.map +1 -0
- package/dist/app.d.ts +44 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +215 -0
- package/dist/app.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +419 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +132 -0
- package/dist/config.js.map +1 -0
- package/dist/engine/context.d.ts +6 -0
- package/dist/engine/context.d.ts.map +1 -0
- package/dist/engine/context.js +65 -0
- package/dist/engine/context.js.map +1 -0
- package/dist/engine/engine.d.ts +74 -0
- package/dist/engine/engine.d.ts.map +1 -0
- package/dist/engine/engine.js +573 -0
- package/dist/engine/engine.js.map +1 -0
- package/dist/engine/types.d.ts +35 -0
- package/dist/engine/types.d.ts.map +1 -0
- package/dist/engine/types.js +2 -0
- package/dist/engine/types.js.map +1 -0
- package/dist/instructions.d.ts +8 -0
- package/dist/instructions.d.ts.map +1 -0
- package/dist/instructions.js +60 -0
- package/dist/instructions.js.map +1 -0
- package/dist/model/codex-lb.d.ts +141 -0
- package/dist/model/codex-lb.d.ts.map +1 -0
- package/dist/model/codex-lb.js +471 -0
- package/dist/model/codex-lb.js.map +1 -0
- package/dist/paths.d.ts +7 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +41 -0
- package/dist/paths.js.map +1 -0
- package/dist/scheduler/daemon.d.ts +40 -0
- package/dist/scheduler/daemon.d.ts.map +1 -0
- package/dist/scheduler/daemon.js +189 -0
- package/dist/scheduler/daemon.js.map +1 -0
- package/dist/scheduler/index.d.ts +8 -0
- package/dist/scheduler/index.d.ts.map +1 -0
- package/dist/scheduler/index.js +6 -0
- package/dist/scheduler/index.js.map +1 -0
- package/dist/scheduler/runner.d.ts +18 -0
- package/dist/scheduler/runner.d.ts.map +1 -0
- package/dist/scheduler/runner.js +173 -0
- package/dist/scheduler/runner.js.map +1 -0
- package/dist/scheduler/schedule.d.ts +7 -0
- package/dist/scheduler/schedule.d.ts.map +1 -0
- package/dist/scheduler/schedule.js +94 -0
- package/dist/scheduler/schedule.js.map +1 -0
- package/dist/scheduler/store.d.ts +55 -0
- package/dist/scheduler/store.d.ts.map +1 -0
- package/dist/scheduler/store.js +1203 -0
- package/dist/scheduler/store.js.map +1 -0
- package/dist/scheduler/systemd.d.ts +7 -0
- package/dist/scheduler/systemd.d.ts.map +1 -0
- package/dist/scheduler/systemd.js +97 -0
- package/dist/scheduler/systemd.js.map +1 -0
- package/dist/scheduler/types.d.ts +145 -0
- package/dist/scheduler/types.d.ts.map +1 -0
- package/dist/scheduler/types.js +7 -0
- package/dist/scheduler/types.js.map +1 -0
- package/dist/security.d.ts +6 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +27 -0
- package/dist/security.js.map +1 -0
- package/dist/storage/artifact-store.d.ts +19 -0
- package/dist/storage/artifact-store.d.ts.map +1 -0
- package/dist/storage/artifact-store.js +47 -0
- package/dist/storage/artifact-store.js.map +1 -0
- package/dist/storage/database.d.ts +5 -0
- package/dist/storage/database.d.ts.map +1 -0
- package/dist/storage/database.js +395 -0
- package/dist/storage/database.js.map +1 -0
- package/dist/storage/session-store.d.ts +114 -0
- package/dist/storage/session-store.d.ts.map +1 -0
- package/dist/storage/session-store.js +731 -0
- package/dist/storage/session-store.js.map +1 -0
- package/dist/tools/agents.d.ts +14 -0
- package/dist/tools/agents.d.ts.map +1 -0
- package/dist/tools/agents.js +35 -0
- package/dist/tools/agents.js.map +1 -0
- package/dist/tools/apply-patch.d.ts +7 -0
- package/dist/tools/apply-patch.d.ts.map +1 -0
- package/dist/tools/apply-patch.js +429 -0
- package/dist/tools/apply-patch.js.map +1 -0
- package/dist/tools/ask.d.ts +8 -0
- package/dist/tools/ask.d.ts.map +1 -0
- package/dist/tools/ask.js +27 -0
- package/dist/tools/ask.js.map +1 -0
- package/dist/tools/bash.d.ts +9 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +98 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/index.d.ts +9 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +34 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/paths.d.ts +3 -0
- package/dist/tools/paths.d.ts.map +1 -0
- package/dist/tools/paths.js +34 -0
- package/dist/tools/paths.js.map +1 -0
- package/dist/tools/process.d.ts +21 -0
- package/dist/tools/process.d.ts.map +1 -0
- package/dist/tools/process.js +104 -0
- package/dist/tools/process.js.map +1 -0
- package/dist/tools/read.d.ts +9 -0
- package/dist/tools/read.d.ts.map +1 -0
- package/dist/tools/read.js +95 -0
- package/dist/tools/read.js.map +1 -0
- package/dist/tools/registry.d.ts +19 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +188 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/safety.d.ts +9 -0
- package/dist/tools/safety.d.ts.map +1 -0
- package/dist/tools/safety.js +199 -0
- package/dist/tools/safety.js.map +1 -0
- package/dist/tools/schedule.d.ts +4 -0
- package/dist/tools/schedule.d.ts.map +1 -0
- package/dist/tools/schedule.js +191 -0
- package/dist/tools/schedule.js.map +1 -0
- package/dist/tools/search.d.ts +16 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +75 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/types.d.ts +54 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +10 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/types.d.ts +90 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/stdio.d.ts +5 -0
- package/dist/ui/stdio.d.ts.map +1 -0
- package/dist/ui/stdio.js +65 -0
- package/dist/ui/stdio.js.map +1 -0
- package/dist/ui/tui.d.ts +93 -0
- package/dist/ui/tui.d.ts.map +1 -0
- package/dist/ui/tui.js +2246 -0
- package/dist/ui/tui.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { toResponseInputItems } from "openai/lib/responses/ResponseInputItems";
|
|
2
|
+
function stripSdkParsedFields(value) {
|
|
3
|
+
if (Array.isArray(value))
|
|
4
|
+
return value.map(stripSdkParsedFields);
|
|
5
|
+
if (!value || typeof value !== "object")
|
|
6
|
+
return value;
|
|
7
|
+
const cleaned = {};
|
|
8
|
+
for (const [key, child] of Object.entries(value)) {
|
|
9
|
+
if (key === "parsed" || key === "parsed_arguments")
|
|
10
|
+
continue;
|
|
11
|
+
cleaned[key] = stripSdkParsedFields(child);
|
|
12
|
+
}
|
|
13
|
+
return cleaned;
|
|
14
|
+
}
|
|
15
|
+
function normalizeCompactionOutput(items) {
|
|
16
|
+
const normalized = items.map((value) => {
|
|
17
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
18
|
+
return value;
|
|
19
|
+
const item = value;
|
|
20
|
+
if (item.type === "compaction_summary" && typeof item.encrypted_content === "string") {
|
|
21
|
+
return { type: "compaction", encrypted_content: item.encrypted_content };
|
|
22
|
+
}
|
|
23
|
+
return item;
|
|
24
|
+
});
|
|
25
|
+
return stripSdkParsedFields(toResponseInputItems(normalized));
|
|
26
|
+
}
|
|
27
|
+
function itemsFromEvent(event) {
|
|
28
|
+
switch (event.kind) {
|
|
29
|
+
case "user":
|
|
30
|
+
return [event.payload.item];
|
|
31
|
+
case "response": {
|
|
32
|
+
const output = event.payload.response.output;
|
|
33
|
+
return stripSdkParsedFields(toResponseInputItems(output));
|
|
34
|
+
}
|
|
35
|
+
case "tool_result":
|
|
36
|
+
case "tool_denied":
|
|
37
|
+
return [event.payload.item];
|
|
38
|
+
default:
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function projectContext(store, sessionId) {
|
|
43
|
+
const checkpoint = store.latestCheckpoint(sessionId);
|
|
44
|
+
const input = [];
|
|
45
|
+
let checkpointSequence = 0;
|
|
46
|
+
if (checkpoint) {
|
|
47
|
+
checkpointSequence = checkpoint.throughSequence;
|
|
48
|
+
const output = checkpoint.compact.output;
|
|
49
|
+
if (!Array.isArray(output))
|
|
50
|
+
throw new Error("Stored compact response has no output array");
|
|
51
|
+
input.push(...normalizeCompactionOutput(output));
|
|
52
|
+
}
|
|
53
|
+
const events = store.events(sessionId, checkpointSequence);
|
|
54
|
+
for (const event of events)
|
|
55
|
+
input.push(...itemsFromEvent(event));
|
|
56
|
+
return {
|
|
57
|
+
input,
|
|
58
|
+
checkpointSequence,
|
|
59
|
+
latestSequence: events.at(-1)?.sequence ?? checkpointSequence,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
export function responseOutputToInput(output) {
|
|
63
|
+
return stripSdkParsedFields(toResponseInputItems(output));
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/engine/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { Response } from "openai/resources/responses/responses";
|
|
2
|
+
import type { CodexLbClient } from "../model/codex-lb.js";
|
|
3
|
+
import type { ArtifactStore } from "../storage/artifact-store.js";
|
|
4
|
+
import type { SessionStore } from "../storage/session-store.js";
|
|
5
|
+
import type { GatewayProvider, GlassConfig, ModelInfo } from "../types.js";
|
|
6
|
+
import type { SessionPromptReservation } from "../scheduler/types.js";
|
|
7
|
+
import type { ApprovalDecision, ApprovalRequest, QuestionRequest } from "../tools/types.js";
|
|
8
|
+
import type { ToolRegistry } from "../tools/registry.js";
|
|
9
|
+
export interface ToolExecutionNotice {
|
|
10
|
+
callId: string;
|
|
11
|
+
name: string;
|
|
12
|
+
summary: string;
|
|
13
|
+
output?: string;
|
|
14
|
+
failed?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface EngineInteraction {
|
|
17
|
+
approve(request: ApprovalRequest): Promise<ApprovalDecision>;
|
|
18
|
+
ask(request: QuestionRequest): Promise<string>;
|
|
19
|
+
}
|
|
20
|
+
export interface EngineCallbacks {
|
|
21
|
+
onResponseStart?(round: number): void;
|
|
22
|
+
onTextDelta?(delta: string): void;
|
|
23
|
+
onReasoningDelta?(delta: string): void;
|
|
24
|
+
onStatus?(status: string): void;
|
|
25
|
+
onWarning?(message: string): void;
|
|
26
|
+
onToolStart?(notice: ToolExecutionNotice): void;
|
|
27
|
+
onToolProgress?(notice: ToolExecutionNotice): void;
|
|
28
|
+
onToolFinish?(notice: ToolExecutionNotice): void;
|
|
29
|
+
}
|
|
30
|
+
export interface TurnOptions {
|
|
31
|
+
signal: AbortSignal;
|
|
32
|
+
interaction: EngineInteraction;
|
|
33
|
+
callbacks?: EngineCallbacks;
|
|
34
|
+
modelInfo: ModelInfo;
|
|
35
|
+
readOnly?: boolean;
|
|
36
|
+
automated?: boolean;
|
|
37
|
+
authorizationSessionId?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface TurnResult {
|
|
40
|
+
response: Response;
|
|
41
|
+
text: string;
|
|
42
|
+
toolCalls: number;
|
|
43
|
+
compacted: boolean;
|
|
44
|
+
}
|
|
45
|
+
export declare class ConversationEngine {
|
|
46
|
+
private readonly config;
|
|
47
|
+
private readonly workspace;
|
|
48
|
+
private readonly store;
|
|
49
|
+
private readonly artifacts;
|
|
50
|
+
private readonly clientOrResolver;
|
|
51
|
+
private readonly tools;
|
|
52
|
+
private readonly instructions;
|
|
53
|
+
private readonly operationOwner;
|
|
54
|
+
constructor(config: GlassConfig, workspace: string, store: SessionStore, artifacts: ArtifactStore, clientOrResolver: CodexLbClient | ((provider: GatewayProvider) => CodexLbClient), tools: ToolRegistry, instructions: string);
|
|
55
|
+
private clientFor;
|
|
56
|
+
private toolSummary;
|
|
57
|
+
private toolDefinitions;
|
|
58
|
+
private boundReplayOutput;
|
|
59
|
+
turn(sessionId: string, text: string, options: TurnOptions): Promise<TurnResult>;
|
|
60
|
+
turnReserved(sessionId: string, text: string, options: TurnOptions, reservation: SessionPromptReservation): Promise<TurnResult>;
|
|
61
|
+
private turnLocked;
|
|
62
|
+
compactNow(sessionId: string, options: Pick<TurnOptions, "signal" | "callbacks">): Promise<void>;
|
|
63
|
+
private compactLocked;
|
|
64
|
+
private requestWithRecovery;
|
|
65
|
+
private executeCalls;
|
|
66
|
+
private executeCall;
|
|
67
|
+
private persistToolOutput;
|
|
68
|
+
private persistUnknownToolOutput;
|
|
69
|
+
private autoCompact;
|
|
70
|
+
private shouldCompact;
|
|
71
|
+
private withOperationLease;
|
|
72
|
+
private requireSession;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/engine/engine.ts"],"names":[],"mappings":"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"}
|