@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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import type { GlassConfig } from "./types.js";
2
+ export interface LoadedInstructions {
3
+ text: string;
4
+ files: string[];
5
+ truncated: boolean;
6
+ }
7
+ export declare function loadInstructions(workspace: string, config: GlassConfig): LoadedInstructions;
8
+ //# sourceMappingURL=instructions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAqB9C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,kBAAkB,CAoC3F"}
@@ -0,0 +1,60 @@
1
+ import { existsSync, readFileSync, statSync } from "node:fs";
2
+ import { isAbsolute, join, resolve } from "node:path";
3
+ import { configDir } from "./paths.js";
4
+ const MAX_INSTRUCTION_CHARS = 48_000;
5
+ const BASE_INSTRUCTIONS = `You are Looking Glass, a pragmatic coding assistant working directly in the user's local workspace.
6
+
7
+ Complete requested work end to end. Inspect the code before editing, make the smallest correct change, and verify it when practical. Use file tools instead of shell commands for reading, searching, and patching. Never claim a command or edit succeeded unless its tool result confirms it. Do not rerun an uncertain side effect without user approval.
8
+
9
+ Keep communication concise and technical. The run_agents tool remains available throughout every main turn; use it just in time at natural fan-out points, not as a ritual first action. Good fan-out points include independent discovery before a decision, disjoint implementation after boundaries are known, newly discovered independent work during implementation, and focused review after changes. Run independent or disjoint work concurrently. Keep dependency chains, overlapping file edits, and integration work sequential on the main rail. Delegate self-contained tasks with clear boundaries, then integrate and verify their results. Do not delegate trivial work, front-load generic review agents by default, or recursively create agents. Scheduled jobs may be deterministic reminders/commands or one model turn in an explicitly persistent session; they are not continuously running agents. Create or modify a schedule only when the user explicitly asks for one and after its exact details are approved. Never create another schedule from inside an automated scheduled turn.
10
+
11
+ In unrestricted sessions, carry out every requested tool action without asking for confirmation, including destructive or access-critical operations. In review and code sessions, do not bypass or disguise required approval. Scheduled model turns inherit the session approval mode. Remembered approvals are valid in main turns, agents, and scheduled turns in every mode; other automated review/code actions remain read-only. Scheduled turns cannot obtain new interactive approval, so they must not perform unremembered gated actions or ask the operator a question.
12
+
13
+ Respect the workspace boundary and permission decisions. Do not expose secrets from files, environment variables, or command output.`;
14
+ function readInstruction(path) {
15
+ if (!existsSync(path))
16
+ return null;
17
+ const stat = statSync(path);
18
+ if (!stat.isFile())
19
+ return null;
20
+ return readFileSync(path, "utf8");
21
+ }
22
+ export function loadInstructions(workspace, config) {
23
+ const candidates = [
24
+ join(configDir(), "AGENTS.md"),
25
+ join(workspace, "AGENTS.md"),
26
+ ...config.instructions.map((path) => isAbsolute(path) ? path : resolve(workspace, path)),
27
+ ];
28
+ const seen = new Set();
29
+ const sections = [BASE_INSTRUCTIONS];
30
+ const files = [];
31
+ let chars = BASE_INSTRUCTIONS.length;
32
+ let truncated = false;
33
+ for (const candidate of candidates) {
34
+ const path = resolve(candidate);
35
+ if (seen.has(path))
36
+ continue;
37
+ seen.add(path);
38
+ const content = readInstruction(path);
39
+ if (content === null)
40
+ continue;
41
+ const room = MAX_INSTRUCTION_CHARS - chars;
42
+ if (room <= 0) {
43
+ truncated = true;
44
+ break;
45
+ }
46
+ const included = content.length > room ? content.slice(0, room) : content;
47
+ sections.push(`Instructions from ${path}:\n${included}`);
48
+ files.push(path);
49
+ chars += included.length;
50
+ if (included.length < content.length) {
51
+ truncated = true;
52
+ break;
53
+ }
54
+ }
55
+ sections.push(`Workspace root: ${workspace}`);
56
+ if (truncated)
57
+ sections.push("Some instruction content was truncated to keep context bounded.");
58
+ return { text: sections.join("\n\n"), files, truncated };
59
+ }
60
+ //# sourceMappingURL=instructions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAErC,MAAM,iBAAiB,GAAG;;;;;;;;qIAQ2G,CAAC;AAEtI,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC;AAQD,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,MAAmB;IACrE,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC;QAC9B,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;QAC5B,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;KACzF,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,QAAQ,GAAa,CAAC,iBAAiB,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC;IACrC,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,OAAO,KAAK,IAAI;YAAE,SAAS;QAC/B,MAAM,IAAI,GAAG,qBAAqB,GAAG,KAAK,CAAC;QAC3C,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM;QACR,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAC1E,QAAQ,CAAC,IAAI,CAAC,qBAAqB,IAAI,MAAM,QAAQ,EAAE,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC;QACzB,IAAI,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACrC,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM;QACR,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,mBAAmB,SAAS,EAAE,CAAC,CAAC;IAC9C,IAAI,SAAS;QAAE,QAAQ,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;IAChG,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,141 @@
1
+ import OpenAI from "openai";
2
+ import type { FunctionTool, Response, ResponseInputItem, ResponseStreamEvent } from "openai/resources/responses/responses";
3
+ import type { GatewayProvider, GlassConfig, ModelInfo, ReasoningEffort, Verbosity } from "../types.js";
4
+ interface ModelMetadata {
5
+ display_name?: string;
6
+ description?: string;
7
+ context_window?: number;
8
+ input_context_window?: number | null;
9
+ max_output_tokens?: number | null;
10
+ supported_reasoning_levels?: Array<{
11
+ effort: string;
12
+ description?: string;
13
+ }>;
14
+ default_reasoning_level?: string | null;
15
+ default_verbosity?: string | null;
16
+ supports_parallel_tool_calls?: boolean;
17
+ supported_in_api?: boolean;
18
+ priority?: number;
19
+ additional_speed_tiers?: string[];
20
+ service_tiers?: Array<{
21
+ id?: string;
22
+ name?: string;
23
+ }>;
24
+ }
25
+ interface RawModel {
26
+ id: string;
27
+ metadata?: ModelMetadata | null;
28
+ capabilities?: {
29
+ context_length?: number;
30
+ max_output_tokens?: number | null;
31
+ supports_reasoning?: boolean;
32
+ supports_images?: boolean;
33
+ supports_tool_use?: boolean;
34
+ };
35
+ context_length?: number;
36
+ max_output_tokens?: number | null;
37
+ supports_reasoning?: boolean;
38
+ supports_images?: boolean;
39
+ }
40
+ interface LmStudioModel {
41
+ type: string;
42
+ key: string;
43
+ display_name?: string;
44
+ description?: string | null;
45
+ max_context_length?: number;
46
+ loaded_instances?: Array<{
47
+ config?: {
48
+ context_length?: number;
49
+ };
50
+ }>;
51
+ capabilities?: {
52
+ vision?: boolean;
53
+ trained_for_tool_use?: boolean;
54
+ reasoning?: {
55
+ allowed_options?: string[];
56
+ default?: string;
57
+ };
58
+ };
59
+ }
60
+ export interface StreamCallbacks {
61
+ onTextDelta?(delta: string): void;
62
+ onReasoningDelta?(delta: string): void;
63
+ onEvent?(event: ResponseStreamEvent): void;
64
+ }
65
+ export interface ResponseRequest {
66
+ model: string;
67
+ instructions: string;
68
+ input: ResponseInputItem[];
69
+ tools: FunctionTool[];
70
+ promptCacheKey: string;
71
+ reasoningEffort: ReasoningEffort;
72
+ supportsReasoning: boolean;
73
+ verbosity: Verbosity;
74
+ fast: boolean;
75
+ previousResponseId?: string;
76
+ signal?: AbortSignal;
77
+ }
78
+ export interface CompactRequest {
79
+ model: string;
80
+ instructions: string;
81
+ input: ResponseInputItem[];
82
+ promptCacheKey: string;
83
+ fast: boolean;
84
+ signal?: AbortSignal;
85
+ }
86
+ export declare function buildResponseParams(provider: GatewayProvider, request: ResponseRequest): {
87
+ store: boolean;
88
+ text: {
89
+ format: {
90
+ type: "text";
91
+ };
92
+ verbosity?: never;
93
+ };
94
+ previous_response_id?: string;
95
+ reasoning?: {
96
+ effort: Exclude<ReasoningEffort, "ultra">;
97
+ summary: "auto";
98
+ };
99
+ model: string;
100
+ instructions: string;
101
+ input: OpenAI.Responses.ResponseInputItem[];
102
+ tools: OpenAI.Responses.FunctionTool[];
103
+ parallel_tool_calls: boolean;
104
+ } | {
105
+ service_tier?: "priority";
106
+ store: boolean;
107
+ prompt_cache_key: string;
108
+ include: "reasoning.encrypted_content"[];
109
+ text: {
110
+ verbosity: Verbosity;
111
+ format?: never;
112
+ };
113
+ previous_response_id?: string;
114
+ reasoning?: {
115
+ effort: Exclude<ReasoningEffort, "ultra">;
116
+ summary: "auto";
117
+ };
118
+ model: string;
119
+ instructions: string;
120
+ input: OpenAI.Responses.ResponseInputItem[];
121
+ tools: OpenAI.Responses.FunctionTool[];
122
+ parallel_tool_calls: boolean;
123
+ };
124
+ export declare function isStaleResponseError(value: unknown, requestWasAnchored: boolean): boolean;
125
+ export declare function modelInfo(raw: RawModel): ModelInfo;
126
+ export declare function lmStudioModelInfo(raw: LmStudioModel): ModelInfo;
127
+ export declare function responseText(response: Pick<Response, "output" | "output_text">): string;
128
+ export declare class CodexLbClient {
129
+ private readonly config;
130
+ private readonly client;
131
+ private readonly apiKey;
132
+ constructor(config: GlassConfig);
133
+ supportsResponseContinuity(): boolean;
134
+ private safeErrorMessage;
135
+ models(signal?: AbortSignal): Promise<ModelInfo[]>;
136
+ stream(request: ResponseRequest, callbacks?: StreamCallbacks): Promise<Response>;
137
+ compact(request: CompactRequest): Promise<Record<string, unknown>>;
138
+ }
139
+ export declare function chooseModel(models: ModelInfo[], configured: string | null): ModelInfo;
140
+ export {};
141
+ //# sourceMappingURL=codex-lb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-lb.d.ts","sourceRoot":"","sources":["../../src/model/codex-lb.ts"],"names":[],"mappings":"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"}