@c0sc0s/orbit 0.5.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 (131) hide show
  1. package/README.md +38 -0
  2. package/assets/README.md +9 -0
  3. package/assets/app-icon.png +0 -0
  4. package/assets/icon.icns +0 -0
  5. package/assets/logo.png +0 -0
  6. package/dist/cdp/client.d.ts +33 -0
  7. package/dist/cdp/client.d.ts.map +1 -0
  8. package/dist/cdp/client.js +159 -0
  9. package/dist/cdp/client.js.map +1 -0
  10. package/dist/cdp/expressions.d.ts +8 -0
  11. package/dist/cdp/expressions.d.ts.map +1 -0
  12. package/dist/cdp/expressions.js +27 -0
  13. package/dist/cdp/expressions.js.map +1 -0
  14. package/dist/cdp/target-registry.d.ts +33 -0
  15. package/dist/cdp/target-registry.d.ts.map +1 -0
  16. package/dist/cdp/target-registry.js +139 -0
  17. package/dist/cdp/target-registry.js.map +1 -0
  18. package/dist/cli/arguments.d.ts +13 -0
  19. package/dist/cli/arguments.d.ts.map +1 -0
  20. package/dist/cli/arguments.js +29 -0
  21. package/dist/cli/arguments.js.map +1 -0
  22. package/dist/cli/platform.d.ts +2 -0
  23. package/dist/cli/platform.d.ts.map +1 -0
  24. package/dist/cli/platform.js +68 -0
  25. package/dist/cli/platform.js.map +1 -0
  26. package/dist/cli/run.d.ts +2 -0
  27. package/dist/cli/run.d.ts.map +1 -0
  28. package/dist/cli/run.js +148 -0
  29. package/dist/cli/run.js.map +1 -0
  30. package/dist/cli.d.ts +3 -0
  31. package/dist/cli.d.ts.map +1 -0
  32. package/dist/cli.js +13 -0
  33. package/dist/cli.js.map +1 -0
  34. package/dist/config/manifest.d.ts +12 -0
  35. package/dist/config/manifest.d.ts.map +1 -0
  36. package/dist/config/manifest.js +71 -0
  37. package/dist/config/manifest.js.map +1 -0
  38. package/dist/host/daemon.d.ts +54 -0
  39. package/dist/host/daemon.d.ts.map +1 -0
  40. package/dist/host/daemon.js +185 -0
  41. package/dist/host/daemon.js.map +1 -0
  42. package/dist/host/plugin-host.d.ts +50 -0
  43. package/dist/host/plugin-host.d.ts.map +1 -0
  44. package/dist/host/plugin-host.js +230 -0
  45. package/dist/host/plugin-host.js.map +1 -0
  46. package/dist/index.d.ts +9 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +7 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/installation/entry.d.ts +2 -0
  51. package/dist/installation/entry.d.ts.map +1 -0
  52. package/dist/installation/entry.js +14 -0
  53. package/dist/installation/entry.js.map +1 -0
  54. package/dist/installation/files.d.ts +5 -0
  55. package/dist/installation/files.d.ts.map +1 -0
  56. package/dist/installation/files.js +101 -0
  57. package/dist/installation/files.js.map +1 -0
  58. package/dist/installation/legacy.d.ts +19 -0
  59. package/dist/installation/legacy.d.ts.map +1 -0
  60. package/dist/installation/legacy.js +52 -0
  61. package/dist/installation/legacy.js.map +1 -0
  62. package/dist/installation/lock.d.ts +2 -0
  63. package/dist/installation/lock.d.ts.map +1 -0
  64. package/dist/installation/lock.js +18 -0
  65. package/dist/installation/lock.js.map +1 -0
  66. package/dist/installation/manager.d.ts +180 -0
  67. package/dist/installation/manager.d.ts.map +1 -0
  68. package/dist/installation/manager.js +469 -0
  69. package/dist/installation/manager.js.map +1 -0
  70. package/dist/lifecycle/resource-scope.d.ts +11 -0
  71. package/dist/lifecycle/resource-scope.d.ts.map +1 -0
  72. package/dist/lifecycle/resource-scope.js +40 -0
  73. package/dist/lifecycle/resource-scope.js.map +1 -0
  74. package/dist/platform/codex-process.d.ts +33 -0
  75. package/dist/platform/codex-process.d.ts.map +1 -0
  76. package/dist/platform/codex-process.js +122 -0
  77. package/dist/platform/codex-process.js.map +1 -0
  78. package/dist/platform/launcher.d.ts +12 -0
  79. package/dist/platform/launcher.d.ts.map +1 -0
  80. package/dist/platform/launcher.js +46 -0
  81. package/dist/platform/launcher.js.map +1 -0
  82. package/dist/plugins/codex-extension.d.ts +12 -0
  83. package/dist/plugins/codex-extension.d.ts.map +1 -0
  84. package/dist/plugins/codex-extension.js +100 -0
  85. package/dist/plugins/codex-extension.js.map +1 -0
  86. package/dist/plugins/manifest.d.ts +20 -0
  87. package/dist/plugins/manifest.d.ts.map +1 -0
  88. package/dist/plugins/manifest.js +51 -0
  89. package/dist/plugins/manifest.js.map +1 -0
  90. package/dist/plugins/registry.d.ts +3 -0
  91. package/dist/plugins/registry.d.ts.map +1 -0
  92. package/dist/plugins/registry.js +26 -0
  93. package/dist/plugins/registry.js.map +1 -0
  94. package/dist/protocol/ipc.d.ts +38 -0
  95. package/dist/protocol/ipc.d.ts.map +1 -0
  96. package/dist/protocol/ipc.js +5 -0
  97. package/dist/protocol/ipc.js.map +1 -0
  98. package/dist/protocol/types.d.ts +55 -0
  99. package/dist/protocol/types.d.ts.map +1 -0
  100. package/dist/protocol/types.js +2 -0
  101. package/dist/protocol/types.js.map +1 -0
  102. package/dist/renderer/loader.d.ts +32 -0
  103. package/dist/renderer/loader.d.ts.map +1 -0
  104. package/dist/renderer/loader.js +130 -0
  105. package/dist/renderer/loader.js.map +1 -0
  106. package/dist/renderer/transport.d.ts +28 -0
  107. package/dist/renderer/transport.d.ts.map +1 -0
  108. package/dist/renderer/transport.js +89 -0
  109. package/dist/renderer/transport.js.map +1 -0
  110. package/dist/sdk/contracts.d.ts +50 -0
  111. package/dist/sdk/contracts.d.ts.map +1 -0
  112. package/dist/sdk/contracts.js +2 -0
  113. package/dist/sdk/contracts.js.map +1 -0
  114. package/dist/service/module.d.ts +24 -0
  115. package/dist/service/module.d.ts.map +1 -0
  116. package/dist/service/module.js +97 -0
  117. package/dist/service/module.js.map +1 -0
  118. package/dist/service/process.d.ts +32 -0
  119. package/dist/service/process.d.ts.map +1 -0
  120. package/dist/service/process.js +95 -0
  121. package/dist/service/process.js.map +1 -0
  122. package/dist/service/worker.d.ts +2 -0
  123. package/dist/service/worker.d.ts.map +1 -0
  124. package/dist/service/worker.js +116 -0
  125. package/dist/service/worker.js.map +1 -0
  126. package/examples/hello.js +10 -0
  127. package/examples/loader.json +4 -0
  128. package/examples/service-loader.json +4 -0
  129. package/examples/service.js +10 -0
  130. package/examples/service.mjs +3 -0
  131. package/package.json +40 -0
@@ -0,0 +1,50 @@
1
+ import { createServiceModule } from "../service/module.js";
2
+ import type { PluginTargetRegistry } from "../cdp/target-registry.js";
3
+ import type { CdpClient } from "../cdp/client.js";
4
+ import type { PluginEntry } from "../sdk/contracts.js";
5
+ import type { LoaderManifest, PluginResult, CleanupFailure } from "../protocol/types.js";
6
+ import type { ResourceScope } from "../lifecycle/resource-scope.js";
7
+ import type { HostModule } from "../service/module.js";
8
+ interface HostClient {
9
+ client: CdpClient;
10
+ generation: number;
11
+ ready: boolean;
12
+ bound: boolean;
13
+ bindings: string[];
14
+ }
15
+ interface ModuleRecord {
16
+ id: string;
17
+ scope: ResourceScope;
18
+ module: HostModule | null;
19
+ clients: Map<string, HostClient>;
20
+ pending: Set<Promise<unknown>>;
21
+ error: string | null;
22
+ signature: string;
23
+ retiring?: boolean;
24
+ }
25
+ /** Runs configured host modules and their renderer plugins without product-specific branches. */
26
+ export declare class PluginHost {
27
+ registry: PluginTargetRegistry;
28
+ manifest: LoaderManifest;
29
+ createModule: typeof createServiceModule;
30
+ modules: ModuleRecord[];
31
+ syncing: Promise<PluginResult[]> | null;
32
+ closing: Promise<CleanupFailure[]> | null;
33
+ constructor({ registry, manifest, createModule }: {
34
+ registry: PluginTargetRegistry;
35
+ manifest: LoaderManifest;
36
+ createModule?: typeof createServiceModule;
37
+ });
38
+ start(): Promise<void>;
39
+ add(entry: PluginEntry): Promise<void>;
40
+ sync(): Promise<PluginResult[]>;
41
+ synchronize(): Promise<PluginResult[]>;
42
+ removeRecord(record: ModuleRecord): Promise<CleanupFailure[]>;
43
+ status(): {
44
+ id: string;
45
+ state: string;
46
+ }[];
47
+ close(): Promise<CleanupFailure[]>;
48
+ }
49
+ export {};
50
+ //# sourceMappingURL=plugin-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-host.d.ts","sourceRoot":"","sources":["../../src/host/plugin-host.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,UAAU,UAAU;IAAG,MAAM,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE;AAClH,UAAU,YAAY;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE;AACrN,iGAAiG;AACjG,qBAAa,UAAU;IACrB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,YAAY,EAAE,OAAO,mBAAmB,CAAC;IACzC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC;IAC1C,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAkC,EAAE,EAAE;QAAE,QAAQ,EAAE,oBAAoB,CAAC;QAAC,QAAQ,EAAE,cAAc,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,mBAAmB,CAAA;KAAE,EAO9K;IAEK,KAAK,kBAGV;IAEK,GAAG,CAAC,KAAK,EAAE,WAAW,iBAmB3B;IAED,IAAI,4BAIH;IAEK,WAAW,4BA2EhB;IAEK,YAAY,CAAC,MAAM,EAAE,YAAY,6BAetC;IAED,MAAM;;;QAIL;IAED,KAAK,8BAWJ;CACF"}
@@ -0,0 +1,230 @@
1
+ import { mkdir } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { createServiceModule } from "../service/module.js";
4
+ import { createResourceScope } from "../lifecycle/resource-scope.js";
5
+ import { readManifest } from "../config/manifest.js";
6
+ /** Runs configured host modules and their renderer plugins without product-specific branches. */
7
+ export class PluginHost {
8
+ registry;
9
+ manifest;
10
+ createModule;
11
+ modules;
12
+ syncing;
13
+ closing;
14
+ constructor({ registry, manifest, createModule = createServiceModule }) {
15
+ this.registry = registry;
16
+ this.manifest = manifest;
17
+ this.createModule = createModule;
18
+ this.modules = [];
19
+ this.syncing = null;
20
+ this.closing = null;
21
+ }
22
+ async start() {
23
+ if (this.modules.length || this.closing)
24
+ throw new Error("Plugin host has already started");
25
+ for (const entry of this.manifest.plugins.filter((item) => item.enabled !== false))
26
+ await this.add(entry);
27
+ }
28
+ async add(entry) {
29
+ const scope = createResourceScope();
30
+ const record = { id: entry.id, scope, module: null, clients: new Map(), pending: new Set(), error: null, signature: JSON.stringify(entry) };
31
+ this.modules.push(record);
32
+ try {
33
+ const stateDirectory = join(this.manifest.root, "module-data", entry.id);
34
+ await mkdir(stateDirectory, { recursive: true, mode: 0o700 });
35
+ const activation = this.createModule(entry, { root: this.manifest.root, stateDirectory, owner: this.registry.owner, onDispose: scope.onDispose })
36
+ .then((module) => { if (typeof module?.dispose === "function")
37
+ scope.onDispose(() => module.dispose?.()); return module; });
38
+ record.module = await scope.bounded(() => activation, "Service activation");
39
+ if (typeof record.module?.renderer !== "function")
40
+ throw new Error("Expected renderer descriptor provider");
41
+ for (const binding of record.module.bindings ?? []) {
42
+ if (typeof binding.name !== "string" || !/^__[A-Za-z][A-Za-z0-9_]*$/.test(binding.name) || typeof binding.handle !== "function")
43
+ throw new Error("Invalid module binding");
44
+ }
45
+ }
46
+ catch {
47
+ record.error = "host-activation";
48
+ try {
49
+ await scope.close();
50
+ }
51
+ catch {
52
+ record.error = "host-cleanup";
53
+ }
54
+ record.module = null;
55
+ }
56
+ }
57
+ sync() {
58
+ if (this.closing)
59
+ return Promise.reject(new Error("Plugin host is closing"));
60
+ this.syncing ??= this.synchronize().finally(() => { this.syncing = null; });
61
+ return this.syncing;
62
+ }
63
+ async synchronize() {
64
+ const latest = await readManifest(this.manifest.path);
65
+ const entries = latest.plugins.filter((item) => item.enabled !== false);
66
+ for (const record of [...this.modules]) {
67
+ if (!record.retiring && !entries.some((entry) => entry.id === record.id && JSON.stringify(entry) === record.signature)) {
68
+ const failures = await this.removeRecord(record);
69
+ if (failures.length) {
70
+ record.retiring = true;
71
+ record.error = "module-cleanup";
72
+ record.module = null;
73
+ continue;
74
+ }
75
+ this.modules = this.modules.filter((item) => item !== record);
76
+ }
77
+ }
78
+ for (const entry of entries)
79
+ if (!this.modules.some((record) => record.id === entry.id))
80
+ await this.add(entry);
81
+ const targets = await this.registry.discover();
82
+ this.registry.prune(targets);
83
+ if (!targets.length)
84
+ throw new Error("No Codex renderer found");
85
+ const targetIds = new Set(targets.map(({ id }) => id));
86
+ const results = [];
87
+ for (const record of this.modules) {
88
+ if (!record.module || record.scope.signal.aborted) {
89
+ results.push({ pluginId: record.id, stage: record.error ?? undefined, error: "Host module unavailable" });
90
+ continue;
91
+ }
92
+ for (const [id] of record.clients) {
93
+ if (!targetIds.has(id)) {
94
+ record.clients.delete(id);
95
+ try {
96
+ await record.scope.bounded(() => record.module?.onTargetRemoved?.(id), "Target cleanup");
97
+ }
98
+ catch {
99
+ record.error = "target-cleanup";
100
+ }
101
+ }
102
+ }
103
+ try {
104
+ await record.scope.bounded(() => record.module?.tick?.(), "Host tick");
105
+ for (const target of targets) {
106
+ if (record.scope.signal.aborted)
107
+ break;
108
+ let stage = "connect";
109
+ try {
110
+ await this.registry.claimPlugin(target, record.id);
111
+ const client = await this.registry.client(target);
112
+ const previous = record.clients.get(target.id);
113
+ const changed = !previous?.bound || previous.client !== client || previous.generation !== client.generation;
114
+ if (changed) {
115
+ await record.scope.bounded(() => record.module?.onTargetRemoved?.(target.id), "Target cleanup");
116
+ if (previous?.client === client)
117
+ for (const name of previous.bindings)
118
+ await client.removeBinding(name);
119
+ const state = { client, generation: client.generation, ready: false, bound: false, bindings: [] };
120
+ record.clients.set(target.id, state);
121
+ for (const binding of record.module.bindings ?? []) {
122
+ if (client.bindingHandlers.has(binding.name))
123
+ throw new Error("Duplicate module binding");
124
+ await client.addBinding(binding.name, (params) => {
125
+ if (record.scope.signal.aborted)
126
+ return;
127
+ const pending = Promise.resolve().then(() => binding.handle(client, params));
128
+ record.pending.add(pending);
129
+ return pending.catch(() => { record.error = "binding"; }).finally(() => record.pending.delete(pending));
130
+ });
131
+ state.bindings.push(binding.name);
132
+ }
133
+ state.bound = true;
134
+ }
135
+ stage = "renderer";
136
+ const descriptor = await record.scope.bounded(() => record.module.renderer(client), "Renderer descriptor");
137
+ if (descriptor?.id !== record.id || typeof descriptor.version !== "string" || typeof descriptor.expression !== "string")
138
+ throw new Error("Invalid module renderer descriptor");
139
+ const result = await this.registry.ensurePlugins([descriptor], [target]);
140
+ results.push(...result.results);
141
+ if (result.results.some((item) => item.error))
142
+ continue;
143
+ const state = record.clients.get(target.id);
144
+ if (!state.ready || result.injectedTargetIds.has(target.id)) {
145
+ stage = "ready";
146
+ await record.scope.bounded(() => record.module?.onReady?.(client), "Module ready");
147
+ state.ready = true;
148
+ }
149
+ }
150
+ catch (error) {
151
+ if (error instanceof Error && (error.message === "Module ready timed out" || error.message === "Target cleanup timed out")) {
152
+ record.scope.abort();
153
+ record.error = stage;
154
+ }
155
+ results.push({ targetId: target.id, pluginId: record.id, stage, error: `Module ${stage} failed` });
156
+ }
157
+ }
158
+ }
159
+ catch {
160
+ record.scope.abort();
161
+ record.error = "host-tick";
162
+ results.push({ pluginId: record.id, stage: "host-tick", error: "Host module synchronization failed" });
163
+ }
164
+ }
165
+ if (!this.modules.length && targets.length)
166
+ await this.registry.ensurePlugins([], targets);
167
+ return results;
168
+ }
169
+ async removeRecord(record) {
170
+ record.scope.abort();
171
+ const failures = [];
172
+ try {
173
+ record.module?.cancelPending?.();
174
+ }
175
+ catch {
176
+ failures.push({ pluginId: record.id, stage: "request-cancellation" });
177
+ }
178
+ try {
179
+ await this.registry.removePlugins([record.id]);
180
+ }
181
+ catch {
182
+ failures.push({ pluginId: record.id, stage: "renderer-cleanup" });
183
+ }
184
+ for (const { client, bindings } of record.clients.values()) {
185
+ for (const name of bindings) {
186
+ try {
187
+ await client.removeBinding(name);
188
+ }
189
+ catch {
190
+ failures.push({ pluginId: record.id, stage: "binding-cleanup" });
191
+ }
192
+ }
193
+ }
194
+ record.clients.clear();
195
+ try {
196
+ await record.scope.bounded(() => Promise.allSettled([...record.pending]), "Pending messages");
197
+ }
198
+ catch {
199
+ failures.push({ pluginId: record.id, stage: "pending-messages" });
200
+ }
201
+ try {
202
+ await record.scope.close();
203
+ }
204
+ catch {
205
+ failures.push({ pluginId: record.id, stage: "host-cleanup" });
206
+ }
207
+ return failures;
208
+ }
209
+ status() {
210
+ return this.modules.map((record) => ({ id: record.id,
211
+ state: record.retiring ? "cleanup-failed" : record.module && !record.scope.signal.aborted ? "active" : "failed",
212
+ }));
213
+ }
214
+ close() {
215
+ if (this.closing)
216
+ return this.closing;
217
+ for (const record of this.modules)
218
+ record.scope.abort();
219
+ this.closing = (async () => {
220
+ await this.syncing?.catch(() => { });
221
+ const failures = [];
222
+ for (const record of [...this.modules].reverse())
223
+ failures.push(...await this.removeRecord(record));
224
+ this.registry.close();
225
+ return failures;
226
+ })();
227
+ return this.closing;
228
+ }
229
+ }
230
+ //# sourceMappingURL=plugin-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-host.js","sourceRoot":"","sources":["../../src/host/plugin-host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export { CodexProcess, findCodexApp } from "./platform/codex-process.js";
2
+ export { CdpClient } from "./cdp/client.js";
3
+ export { PluginTargetRegistry, isCodexRendererTarget } from "./cdp/target-registry.js";
4
+ export { LOADER_VERSION, buildLoaderExpression, buildPluginExpression, buildPluginRemovalExpression, buildPluginMessageExpression } from "./cdp/expressions.js";
5
+ export { PluginHost } from "./host/plugin-host.js";
6
+ export { createLauncher } from "./platform/launcher.js";
7
+ export type * from "./sdk/contracts.js";
8
+ export type * from "./protocol/types.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAChK,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,mBAAmB,oBAAoB,CAAC;AACxC,mBAAmB,qBAAqB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export { CodexProcess, findCodexApp } from "./platform/codex-process.js";
2
+ export { CdpClient } from "./cdp/client.js";
3
+ export { PluginTargetRegistry, isCodexRendererTarget } from "./cdp/target-registry.js";
4
+ export { LOADER_VERSION, buildLoaderExpression, buildPluginExpression, buildPluginRemovalExpression, buildPluginMessageExpression } from "./cdp/expressions.js";
5
+ export { PluginHost } from "./host/plugin-host.js";
6
+ export { createLauncher } from "./platform/launcher.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAChK,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/installation/entry.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { dirname, resolve, relative } from "node:path";
3
+ import { fileURLToPath, pathToFileURL } from "node:url";
4
+ const root = dirname(fileURLToPath(import.meta.url));
5
+ process.env.ORBIT_HOME = root;
6
+ const portIndex = process.argv.indexOf("--port");
7
+ if (portIndex >= 0)
8
+ process.env.ORBIT_CDP_PORT = process.argv[portIndex + 1];
9
+ const config = JSON.parse(await readFile(resolve(root, "loader.json"), "utf8"));
10
+ const cli = resolve(root, config.orbit.runtime.path, "dist/cli.js");
11
+ if (relative(root, cli).startsWith(".."))
12
+ throw new Error("Invalid active runtime path");
13
+ await import(pathToFileURL(cli).href);
14
+ //# sourceMappingURL=entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/installation/entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;AAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjD,IAAI,SAAS,IAAI,CAAC;IAAE,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAChF,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACpE,IAAI,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;IAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AACzF,MAAM,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function exists(path: string): Promise<boolean>;
2
+ export declare function inside(root: string, path: string): string;
3
+ export declare function atomicJson(path: string, value: unknown): Promise<void>;
4
+ export declare function snapshotPackage(source: string, destination: string, ancestry?: Set<string>, installedDependency?: boolean): Promise<void>;
5
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/installation/files.ts"],"names":[],"mappings":"AAgBA,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,oBAQxC;AACD,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAehD;AACD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,iBAQ5D;AACD,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,QAAQ,cAAoB,EAC5B,mBAAmB,UAAQ,iBA2D5B"}
@@ -0,0 +1,101 @@
1
+ import { cp, lstat, mkdir, readFile, readdir, realpath, rename, rm, writeFile, } from "node:fs/promises";
2
+ import { createRequire } from "node:module";
3
+ import { dirname, isAbsolute, join, relative, resolve } from "node:path";
4
+ import { randomUUID } from "node:crypto";
5
+ import { lstatSync } from "node:fs";
6
+ export async function exists(path) {
7
+ try {
8
+ await lstat(path);
9
+ return true;
10
+ }
11
+ catch (error) {
12
+ if (error.code === "ENOENT")
13
+ return false;
14
+ throw error;
15
+ }
16
+ }
17
+ export function inside(root, path) {
18
+ const result = resolve(root, path), local = relative(root, result);
19
+ if (!local || local.startsWith("..") || isAbsolute(local))
20
+ throw new Error("Path must stay within its owned directory");
21
+ for (let current = result;; current = dirname(current)) {
22
+ try {
23
+ if (lstatSync(current).isSymbolicLink())
24
+ throw new Error("Owned package paths must not traverse symlinks");
25
+ }
26
+ catch (error) {
27
+ if (error.code !== "ENOENT")
28
+ throw error;
29
+ }
30
+ if (current === resolve(root))
31
+ break;
32
+ }
33
+ return result;
34
+ }
35
+ export async function atomicJson(path, value) {
36
+ const next = `${path}.${randomUUID()}.tmp`;
37
+ try {
38
+ await writeFile(next, JSON.stringify(value, null, 2) + "\n", { mode: 0o600 });
39
+ await rename(next, path);
40
+ }
41
+ finally {
42
+ await rm(next, { force: true });
43
+ }
44
+ }
45
+ export async function snapshotPackage(source, destination, ancestry = new Set(), installedDependency = false) {
46
+ source = await realpath(source);
47
+ if (ancestry.has(source))
48
+ throw new Error("Circular package dependency cannot be snapshotted");
49
+ const manifest = JSON.parse(await readFile(join(source, "package.json"), "utf8"));
50
+ const declared = manifest.files;
51
+ const concrete = Array.isArray(declared) &&
52
+ declared.length > 0 &&
53
+ declared.every((file) => typeof file === "string" && !/[*?]/u.test(file));
54
+ if (!concrete && !installedDependency)
55
+ throw new Error("Local packages need an explicit files allowlist without globs");
56
+ const contents = await readdir(source);
57
+ const files = concrete
58
+ ? declared
59
+ : contents.filter((file) => !["node_modules", ".git"].includes(file));
60
+ await mkdir(destination, { recursive: true, mode: 0o700 });
61
+ const legalFiles = contents.filter((file) => /^licen[cs]e(?:\..*)?$/iu.test(file));
62
+ for (const file of new Set(["package.json", "README.md", ...legalFiles, ...files])) {
63
+ const entry = inside(source, file);
64
+ if (!(await exists(entry)))
65
+ continue;
66
+ await cp(entry, inside(destination, file), {
67
+ recursive: true,
68
+ filter: (path) => {
69
+ const local = relative(source, path);
70
+ if (local.split(/[\\/]/u).some((part) => ["node_modules", ".git"].includes(part)))
71
+ return false;
72
+ if (lstatSync(path).isSymbolicLink())
73
+ throw new Error("Package snapshots cannot contain symlinks");
74
+ return true;
75
+ },
76
+ });
77
+ }
78
+ const resolver = createRequire(join(source, "package.json"));
79
+ for (const dependency of Object.keys(manifest.dependencies ?? {})) {
80
+ let dependencyRoot;
81
+ try {
82
+ dependencyRoot = dirname(resolver.resolve(`${dependency}/package.json`));
83
+ }
84
+ catch {
85
+ dependencyRoot = dirname(resolver.resolve(dependency));
86
+ while (true) {
87
+ if (await exists(join(dependencyRoot, "package.json"))) {
88
+ const candidate = JSON.parse(await readFile(join(dependencyRoot, "package.json"), "utf8"));
89
+ if (candidate.name === dependency)
90
+ break;
91
+ }
92
+ const parent = dirname(dependencyRoot);
93
+ if (parent === dependencyRoot)
94
+ throw new Error(`Missing dependency ${dependency}`);
95
+ dependencyRoot = parent;
96
+ }
97
+ }
98
+ await snapshotPackage(dependencyRoot, inside(destination, `node_modules/${dependency}`), new Set([...ancestry, source]), true);
99
+ }
100
+ }
101
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/installation/files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { InstallationOptions } from "./manager.js";
2
+ export declare function retireLegacyTags(options: {
3
+ directory: string;
4
+ platformRoot: string;
5
+ home: string;
6
+ applicationsRoot?: string;
7
+ port: number;
8
+ run: NonNullable<InstallationOptions["run"]>;
9
+ codexBinary?: string;
10
+ manageExtensions?: boolean;
11
+ platform: string;
12
+ }): Promise<{
13
+ migrated: boolean;
14
+ dataPreserved?: undefined;
15
+ } | {
16
+ migrated: boolean;
17
+ dataPreserved: string;
18
+ }>;
19
+ //# sourceMappingURL=legacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy.d.ts","sourceRoot":"","sources":["../../src/installation/legacy.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,WAAW,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;;;;;;GAwDA"}
@@ -0,0 +1,52 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { join, resolve } from "node:path";
3
+ import { exists } from "./files.js";
4
+ import { createLauncher } from "../platform/launcher.js";
5
+ import { createCodexExtensionManager } from "../plugins/codex-extension.js";
6
+ export async function retireLegacyTags(options) {
7
+ const { directory, platformRoot, run, port } = options;
8
+ if (!(await exists(join(directory, "install.json"))))
9
+ return { migrated: false };
10
+ if (resolve(directory) === resolve(platformRoot))
11
+ throw new Error("Legacy data and Orbit platform directories must be distinct");
12
+ const metadata = JSON.parse(await readFile(join(directory, "install.json"), "utf8"));
13
+ if (metadata.platformRoot === platformRoot)
14
+ return { migrated: true };
15
+ if (!Array.isArray(metadata.runtimeFiles) || !metadata.pluginVersion)
16
+ throw new Error("Unrecognized legacy installation");
17
+ const configPath = join(directory, "loader.json");
18
+ const config = JSON.parse(await readFile(configPath, "utf8"));
19
+ if (config.plugins?.some((plugin) => plugin.id !== "codex-tags"))
20
+ throw new Error("Legacy installation contains other modules; migrate their ownership explicitly before proceeding");
21
+ const candidates = [
22
+ "node_modules/@c0sc0s/orbit/dist/cli.js",
23
+ "node_modules/@c0sc0s/orbit/src/cli.mjs",
24
+ "plugin-loader/cli.mjs",
25
+ ];
26
+ for (const candidate of candidates)
27
+ if (await exists(join(directory, candidate))) {
28
+ await run(process.execPath, [join(directory, candidate), "stop", "--config", configPath, "--port", String(port)], { timeout: 90_000 });
29
+ break;
30
+ }
31
+ if (options.manageExtensions !== false) {
32
+ const extensions = createCodexExtensionManager(platformRoot, run, options.codexBinary);
33
+ const state = JSON.parse((await extensions.command(["plugin", "marketplace", "list", "--json"])).stdout);
34
+ const old = state.marketplaces?.find((entry) => entry.name === "codex-tags-cli");
35
+ if (old && resolve(old.root) === resolve(directory, "plugin-marketplace"))
36
+ await extensions.remove("codex-tags", "codex-tags-cli", true, old.root);
37
+ }
38
+ const launcherPath = join(options.applicationsRoot ?? join(options.home, "Applications"), "Codex Tags.app");
39
+ if (options.platform === "darwin" && (await exists(launcherPath)))
40
+ await createLauncher({
41
+ launcherPath,
42
+ nodePath: process.execPath,
43
+ cliPath: join(platformRoot, "orbit.mjs"),
44
+ configPath: join(platformRoot, "loader.json"),
45
+ port,
46
+ logPath: join(platformRoot, "launcher.log"),
47
+ bundleId: "io.github.c0sc0s.codex-tags",
48
+ iconPath: join(options.applicationsRoot ?? join(options.home, "Applications"), "Orbit.app/Contents/Resources/icon.icns"),
49
+ });
50
+ return { migrated: true, dataPreserved: directory };
51
+ }
52
+ //# sourceMappingURL=legacy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy.js","sourceRoot":"","sources":["../../src/installation/legacy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function withInstallationLock<T>(configPath: string, operation: () => Promise<T>): Promise<T>;
2
+ //# sourceMappingURL=lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/installation/lock.ts"],"names":[],"mappings":"AAEA,wBAAsB,oBAAoB,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,cAgB5F"}
@@ -0,0 +1,18 @@
1
+ import { open, rm } from "node:fs/promises";
2
+ export async function withInstallationLock(configPath, operation) {
3
+ const path = `${configPath}.lock`;
4
+ const handle = await open(path, "wx", 0o600).catch((error) => {
5
+ if (error.code === "EEXIST")
6
+ throw new Error("Another Orbit configuration operation is running; stale locks require explicit inspection");
7
+ throw error;
8
+ });
9
+ try {
10
+ await handle.writeFile(JSON.stringify({ pid: process.pid, startedAt: Date.now() }));
11
+ return await operation();
12
+ }
13
+ finally {
14
+ await handle.close();
15
+ await rm(path, { force: true });
16
+ }
17
+ }
18
+ //# sourceMappingURL=lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/installation/lock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAI,UAAkB,EAAE,SAA2B;IAC3F,MAAM,IAAI,GAAG,GAAG,UAAU,OAAO,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3D,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YACzB,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAC;QACJ,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACpF,OAAO,MAAM,SAAS,EAAE,CAAC;IAC3B,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;AACH,CAAC"}