@godot-mcp/control-plane 0.0.0 → 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 +105 -2
- package/dist/audit/jsonlAuditSink.d.ts +33 -0
- package/dist/audit/jsonlAuditSink.d.ts.map +1 -0
- package/dist/audit/jsonlAuditSink.js +57 -0
- package/dist/audit/jsonlAuditSink.js.map +1 -0
- package/dist/audit/redact.d.ts +2 -0
- package/dist/audit/redact.d.ts.map +1 -0
- package/dist/audit/redact.js +44 -0
- package/dist/audit/redact.js.map +1 -0
- package/dist/auth/pairingDescriptor.d.ts +44 -0
- package/dist/auth/pairingDescriptor.d.ts.map +1 -0
- package/dist/auth/pairingDescriptor.js +91 -0
- package/dist/auth/pairingDescriptor.js.map +1 -0
- package/dist/auth/runtimeDirectory.d.ts +3 -0
- package/dist/auth/runtimeDirectory.d.ts.map +1 -0
- package/dist/auth/runtimeDirectory.js +30 -0
- package/dist/auth/runtimeDirectory.js.map +1 -0
- package/dist/auth/sessionCrypto.d.ts +18 -0
- package/dist/auth/sessionCrypto.d.ts.map +1 -0
- package/dist/auth/sessionCrypto.js +118 -0
- package/dist/auth/sessionCrypto.js.map +1 -0
- package/dist/editor/editorMutationService.d.ts +21 -0
- package/dist/editor/editorMutationService.d.ts.map +1 -0
- package/dist/editor/editorMutationService.js +120 -0
- package/dist/editor/editorMutationService.js.map +1 -0
- package/dist/editor/mutationLedger.d.ts +30 -0
- package/dist/editor/mutationLedger.d.ts.map +1 -0
- package/dist/editor/mutationLedger.js +133 -0
- package/dist/editor/mutationLedger.js.map +1 -0
- package/dist/errors.d.ts +12 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +23 -0
- package/dist/errors.js.map +1 -0
- package/dist/evidence/evidenceStore.d.ts +63 -0
- package/dist/evidence/evidenceStore.d.ts.map +1 -0
- package/dist/evidence/evidenceStore.js +350 -0
- package/dist/evidence/evidenceStore.js.map +1 -0
- package/dist/extensions/extensionRegistry.d.ts +33 -0
- package/dist/extensions/extensionRegistry.d.ts.map +1 -0
- package/dist/extensions/extensionRegistry.js +37 -0
- package/dist/extensions/extensionRegistry.js.map +1 -0
- package/dist/help/coreHelp.d.ts +10 -0
- package/dist/help/coreHelp.d.ts.map +1 -0
- package/dist/help/coreHelp.js +82 -0
- package/dist/help/coreHelp.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/policy/authorize.d.ts +5 -0
- package/dist/policy/authorize.d.ts.map +1 -0
- package/dist/policy/authorize.js +19 -0
- package/dist/policy/authorize.js.map +1 -0
- package/dist/policy/capabilities.d.ts +36 -0
- package/dist/policy/capabilities.d.ts.map +1 -0
- package/dist/policy/capabilities.js +129 -0
- package/dist/policy/capabilities.js.map +1 -0
- package/dist/project/artifactStore.d.ts +32 -0
- package/dist/project/artifactStore.d.ts.map +1 -0
- package/dist/project/artifactStore.js +172 -0
- package/dist/project/artifactStore.js.map +1 -0
- package/dist/project/pathPolicy.d.ts +4 -0
- package/dist/project/pathPolicy.d.ts.map +1 -0
- package/dist/project/pathPolicy.js +74 -0
- package/dist/project/pathPolicy.js.map +1 -0
- package/dist/project/projectConfig.d.ts +10 -0
- package/dist/project/projectConfig.d.ts.map +1 -0
- package/dist/project/projectConfig.js +63 -0
- package/dist/project/projectConfig.js.map +1 -0
- package/dist/project/projectIdentity.d.ts +8 -0
- package/dist/project/projectIdentity.d.ts.map +1 -0
- package/dist/project/projectIdentity.js +58 -0
- package/dist/project/projectIdentity.js.map +1 -0
- package/dist/project/projectJobJournal.d.ts +49 -0
- package/dist/project/projectJobJournal.d.ts.map +1 -0
- package/dist/project/projectJobJournal.js +67 -0
- package/dist/project/projectJobJournal.js.map +1 -0
- package/dist/project/projectJobService.d.ts +52 -0
- package/dist/project/projectJobService.d.ts.map +1 -0
- package/dist/project/projectJobService.js +289 -0
- package/dist/project/projectJobService.js.map +1 -0
- package/dist/project/projectMutationService.d.ts +40 -0
- package/dist/project/projectMutationService.d.ts.map +1 -0
- package/dist/project/projectMutationService.js +145 -0
- package/dist/project/projectMutationService.js.map +1 -0
- package/dist/project/projectPreflight.d.ts +7 -0
- package/dist/project/projectPreflight.d.ts.map +1 -0
- package/dist/project/projectPreflight.js +50 -0
- package/dist/project/projectPreflight.js.map +1 -0
- package/dist/project/projectProcess.d.ts +40 -0
- package/dist/project/projectProcess.d.ts.map +1 -0
- package/dist/project/projectProcess.js +196 -0
- package/dist/project/projectProcess.js.map +1 -0
- package/dist/project/projectService.d.ts +20 -0
- package/dist/project/projectService.d.ts.map +1 -0
- package/dist/project/projectService.js +35 -0
- package/dist/project/projectService.js.map +1 -0
- package/dist/project/secureJournalFile.d.ts +3 -0
- package/dist/project/secureJournalFile.d.ts.map +1 -0
- package/dist/project/secureJournalFile.js +56 -0
- package/dist/project/secureJournalFile.js.map +1 -0
- package/dist/runtime/debugTokenStore.d.ts +41 -0
- package/dist/runtime/debugTokenStore.d.ts.map +1 -0
- package/dist/runtime/debugTokenStore.js +105 -0
- package/dist/runtime/debugTokenStore.js.map +1 -0
- package/dist/runtime/debuggerClient.d.ts +14 -0
- package/dist/runtime/debuggerClient.d.ts.map +1 -0
- package/dist/runtime/debuggerClient.js +21 -0
- package/dist/runtime/debuggerClient.js.map +1 -0
- package/dist/runtime/inputReceipt.d.ts +15 -0
- package/dist/runtime/inputReceipt.d.ts.map +1 -0
- package/dist/runtime/inputReceipt.js +36 -0
- package/dist/runtime/inputReceipt.js.map +1 -0
- package/dist/runtime/runtimeDescriptor.d.ts +50 -0
- package/dist/runtime/runtimeDescriptor.d.ts.map +1 -0
- package/dist/runtime/runtimeDescriptor.js +175 -0
- package/dist/runtime/runtimeDescriptor.js.map +1 -0
- package/dist/runtime/runtimeProcess.d.ts +39 -0
- package/dist/runtime/runtimeProcess.d.ts.map +1 -0
- package/dist/runtime/runtimeProcess.js +180 -0
- package/dist/runtime/runtimeProcess.js.map +1 -0
- package/dist/runtime/runtimeService.d.ts +130 -0
- package/dist/runtime/runtimeService.d.ts.map +1 -0
- package/dist/runtime/runtimeService.js +919 -0
- package/dist/runtime/runtimeService.js.map +1 -0
- package/dist/session/sessionService.d.ts +52 -0
- package/dist/session/sessionService.d.ts.map +1 -0
- package/dist/session/sessionService.js +72 -0
- package/dist/session/sessionService.js.map +1 -0
- package/dist/unsafe/unsafeFixtureAuthority.d.ts +27 -0
- package/dist/unsafe/unsafeFixtureAuthority.d.ts.map +1 -0
- package/dist/unsafe/unsafeFixtureAuthority.js +130 -0
- package/dist/unsafe/unsafeFixtureAuthority.js.map +1 -0
- package/dist/unsafe/unsafeFixtureProcess.d.ts +30 -0
- package/dist/unsafe/unsafeFixtureProcess.d.ts.map +1 -0
- package/dist/unsafe/unsafeFixtureProcess.js +119 -0
- package/dist/unsafe/unsafeFixtureProcess.js.map +1 -0
- package/dist/unsafe/unsafeFixtureService.d.ts +41 -0
- package/dist/unsafe/unsafeFixtureService.d.ts.map +1 -0
- package/dist/unsafe/unsafeFixtureService.js +162 -0
- package/dist/unsafe/unsafeFixtureService.js.map +1 -0
- package/dist/visual/pngComparison.d.ts +12 -0
- package/dist/visual/pngComparison.d.ts.map +1 -0
- package/dist/visual/pngComparison.js +136 -0
- package/dist/visual/pngComparison.js.map +1 -0
- package/dist/visual/scenarioService.d.ts +50 -0
- package/dist/visual/scenarioService.d.ts.map +1 -0
- package/dist/visual/scenarioService.js +421 -0
- package/dist/visual/scenarioService.js.map +1 -0
- package/dist/visual/visualService.d.ts +27 -0
- package/dist/visual/visualService.d.ts.map +1 -0
- package/dist/visual/visualService.js +70 -0
- package/dist/visual/visualService.js.map +1 -0
- package/package.json +26 -6
- package/index.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeService.js","sourceRoot":"","sources":["../../src/runtime/runtimeService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { type GodotMcpError, type ProjectIdentity } from "@godot-mcp/protocol";
|
|
2
|
+
import { type SessionGrants } from "../policy/capabilities.js";
|
|
3
|
+
import { type CoreHelp, type CoreHelpTopic } from "../help/coreHelp.js";
|
|
4
|
+
export type SessionState = "starting" | "waiting_for_addon" | "attached" | "disconnected" | "closed";
|
|
5
|
+
export interface PublicAttachment {
|
|
6
|
+
sessionId: string;
|
|
7
|
+
godotVersion: string;
|
|
8
|
+
addonVersion: string;
|
|
9
|
+
addonManifestSha256: string;
|
|
10
|
+
attachedAt: string;
|
|
11
|
+
}
|
|
12
|
+
export interface PublicSessionSnapshot {
|
|
13
|
+
productVersion: string;
|
|
14
|
+
protocolVersion: string;
|
|
15
|
+
projectId: string;
|
|
16
|
+
projectConfigSha256: string;
|
|
17
|
+
state: SessionState;
|
|
18
|
+
grants: SessionGrants;
|
|
19
|
+
attachment: PublicAttachment | null;
|
|
20
|
+
lastErrorCode: GodotMcpError["code"] | null;
|
|
21
|
+
}
|
|
22
|
+
export interface CapabilitySummary {
|
|
23
|
+
tiers: SessionGrants["tiers"];
|
|
24
|
+
packs: SessionGrants["packs"];
|
|
25
|
+
operations: string[];
|
|
26
|
+
}
|
|
27
|
+
export interface DoctorCheck {
|
|
28
|
+
name: string;
|
|
29
|
+
status: "ok" | "warning" | "error";
|
|
30
|
+
detail: string;
|
|
31
|
+
}
|
|
32
|
+
export interface DoctorResult {
|
|
33
|
+
healthy: boolean;
|
|
34
|
+
checks: DoctorCheck[];
|
|
35
|
+
}
|
|
36
|
+
export declare class SessionService {
|
|
37
|
+
private readonly project;
|
|
38
|
+
private readonly grants;
|
|
39
|
+
private readonly installationDoctor;
|
|
40
|
+
private state;
|
|
41
|
+
private attachment;
|
|
42
|
+
private lastErrorCode;
|
|
43
|
+
constructor(project: ProjectIdentity, grants: SessionGrants, installationDoctor: () => Promise<DoctorResult>);
|
|
44
|
+
onAttached(value: PublicAttachment): void;
|
|
45
|
+
onDisconnected(errorCode?: GodotMcpError["code"] | null): void;
|
|
46
|
+
close(): void;
|
|
47
|
+
snapshot(): PublicSessionSnapshot;
|
|
48
|
+
capabilities(): CapabilitySummary;
|
|
49
|
+
doctor(): Promise<DoctorResult>;
|
|
50
|
+
help(topic?: CoreHelpTopic): CoreHelp;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=sessionService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionService.d.ts","sourceRoot":"","sources":["../../src/session/sessionService.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAe,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAErF,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,mBAAmB,GAAG,UAAU,GAAG,cAAc,GAAG,QAAQ,CAAC;AAErG,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,qBAAa,cAAc;IAMvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAPrC,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,aAAa,CAAsC;gBAGxC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,aAAa,EACrB,kBAAkB,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC;IAGlE,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAYzC,cAAc,CAAC,SAAS,GAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAW,GAAG,IAAI;IAMpE,KAAK,IAAI,IAAI;IAKb,QAAQ,IAAI,qBAAqB;IAajC,YAAY,IAAI,iBAAiB;IAQ3B,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAcrC,IAAI,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,QAAQ;CAGtC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { BRIDGE_PROTOCOL_VERSION, PRODUCT_VERSION, } from "@godot-mcp/protocol";
|
|
2
|
+
import { visibleCapabilities, } from "../policy/capabilities.js";
|
|
3
|
+
import { getCoreHelp } from "../help/coreHelp.js";
|
|
4
|
+
export class SessionService {
|
|
5
|
+
project;
|
|
6
|
+
grants;
|
|
7
|
+
installationDoctor;
|
|
8
|
+
state = "waiting_for_addon";
|
|
9
|
+
attachment = null;
|
|
10
|
+
lastErrorCode = null;
|
|
11
|
+
constructor(project, grants, installationDoctor) {
|
|
12
|
+
this.project = project;
|
|
13
|
+
this.grants = grants;
|
|
14
|
+
this.installationDoctor = installationDoctor;
|
|
15
|
+
}
|
|
16
|
+
onAttached(value) {
|
|
17
|
+
this.attachment = {
|
|
18
|
+
sessionId: value.sessionId,
|
|
19
|
+
godotVersion: value.godotVersion,
|
|
20
|
+
addonVersion: value.addonVersion,
|
|
21
|
+
addonManifestSha256: value.addonManifestSha256,
|
|
22
|
+
attachedAt: value.attachedAt,
|
|
23
|
+
};
|
|
24
|
+
this.lastErrorCode = null;
|
|
25
|
+
this.state = "attached";
|
|
26
|
+
}
|
|
27
|
+
onDisconnected(errorCode = null) {
|
|
28
|
+
this.attachment = null;
|
|
29
|
+
this.lastErrorCode = errorCode;
|
|
30
|
+
this.state = "disconnected";
|
|
31
|
+
}
|
|
32
|
+
close() {
|
|
33
|
+
this.attachment = null;
|
|
34
|
+
this.state = "closed";
|
|
35
|
+
}
|
|
36
|
+
snapshot() {
|
|
37
|
+
return {
|
|
38
|
+
productVersion: PRODUCT_VERSION,
|
|
39
|
+
protocolVersion: BRIDGE_PROTOCOL_VERSION,
|
|
40
|
+
projectId: this.project.projectId,
|
|
41
|
+
projectConfigSha256: this.project.projectConfigSha256,
|
|
42
|
+
state: this.state,
|
|
43
|
+
grants: { tiers: [...this.grants.tiers], packs: [...this.grants.packs] },
|
|
44
|
+
attachment: this.attachment ? { ...this.attachment } : null,
|
|
45
|
+
lastErrorCode: this.lastErrorCode,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
capabilities() {
|
|
49
|
+
return {
|
|
50
|
+
tiers: [...this.grants.tiers],
|
|
51
|
+
packs: [...this.grants.packs],
|
|
52
|
+
operations: visibleCapabilities(this.grants).map((policy) => policy.command),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
async doctor() {
|
|
56
|
+
const installation = await this.installationDoctor();
|
|
57
|
+
const attached = this.state === "attached";
|
|
58
|
+
const liveCheck = {
|
|
59
|
+
name: "bridge-session",
|
|
60
|
+
status: attached ? "ok" : "error",
|
|
61
|
+
detail: attached ? "Godot editor addon is attached" : `Bridge session state is ${this.state}`,
|
|
62
|
+
};
|
|
63
|
+
return {
|
|
64
|
+
healthy: installation.healthy && attached,
|
|
65
|
+
checks: [...installation.checks.map((check) => ({ ...check })), liveCheck],
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
help(topic) {
|
|
69
|
+
return getCoreHelp(topic);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=sessionService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionService.js","sourceRoot":"","sources":["../../src/session/sessionService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const LeaseSchema: z.ZodObject<{
|
|
3
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
4
|
+
registrationId: z.ZodUUID;
|
|
5
|
+
instanceId: z.ZodUUID;
|
|
6
|
+
copyRoot: z.ZodString;
|
|
7
|
+
projectSha256: z.ZodString;
|
|
8
|
+
markerNonceSha256: z.ZodString;
|
|
9
|
+
ownerUid: z.ZodNumber;
|
|
10
|
+
nonce: z.ZodString;
|
|
11
|
+
expiresAt: z.ZodString;
|
|
12
|
+
}, z.core.$strict>;
|
|
13
|
+
export type UnsafeActivation = z.infer<typeof LeaseSchema>;
|
|
14
|
+
export declare function registerUnsafeFixture(registryPath: string, templateRoot: string, confirmation: string): Promise<{
|
|
15
|
+
registrationId: string;
|
|
16
|
+
}>;
|
|
17
|
+
export declare function stampUnsafeFixtureCopy(registryPath: string, copyRoot: string, registrationId: string): Promise<{
|
|
18
|
+
instanceId: string;
|
|
19
|
+
}>;
|
|
20
|
+
export declare function approveUnsafeFixtureCopy(registryPath: string, copyRoot: string, activationDirectory: string, confirmation: string, ttlMs?: number): Promise<{
|
|
21
|
+
leasePath: string;
|
|
22
|
+
expiresAt: string;
|
|
23
|
+
}>;
|
|
24
|
+
export declare function consumeUnsafeFixtureActivation(registryPath: string, copyRoot: string, leasePath: string, now?: number): Promise<UnsafeActivation>;
|
|
25
|
+
export declare const UNSAFE_CONFIRMATION_PHRASE = "I UNDERSTAND THIS RUNS UNSANDBOXED CODE";
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=unsafeFixtureAuthority.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unsafeFixtureAuthority.d.ts","sourceRoot":"","sources":["../../src/unsafe/unsafeFixtureAuthority.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,QAAA,MAAM,WAAW;;;;;;;;;;kBAAwW,CAAC;AAE1X,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAyC3D,wBAAsB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,CAWjJ;AAED,wBAAsB,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAY5I;AAED,wBAAsB,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,SAAe,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAYjN;AAED,wBAAsB,8BAA8B,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAY3J;AAED,eAAO,MAAM,0BAA0B,4CAAe,CAAC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { constants } from "node:fs";
|
|
2
|
+
import { createHash, randomBytes, randomUUID } from "node:crypto";
|
|
3
|
+
import { chmod, lstat, mkdir, open, readFile, realpath, rename, rm, writeFile } from "node:fs/promises";
|
|
4
|
+
import { dirname, join, resolve } from "node:path";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
const CONFIRMATION = "I UNDERSTAND THIS RUNS UNSANDBOXED CODE";
|
|
7
|
+
const MAX_LEASE_MS = 5 * 60_000;
|
|
8
|
+
const RegistrationSchema = z.object({ registrationId: z.uuid(), templateRoot: z.string().min(1), projectSha256: z.string().regex(/^[a-f0-9]{64}$/), markerNonceSha256: z.string().regex(/^[a-f0-9]{64}$/), createdAt: z.string().datetime() }).strict();
|
|
9
|
+
const RegistrySchema = z.object({ schemaVersion: z.literal(1), registrations: z.array(RegistrationSchema).max(128) }).strict();
|
|
10
|
+
const MarkerSchema = z.object({ schemaVersion: z.literal(1), registrationId: z.uuid(), role: z.enum(["template", "copy"]), disposable: z.literal(true), projectSha256: z.string().regex(/^[a-f0-9]{64}$/), markerNonce: z.string().regex(/^[A-Za-z0-9_-]{43}$/), createdAt: z.string().datetime(), instanceId: z.uuid().optional() }).strict();
|
|
11
|
+
const LeaseSchema = z.object({ schemaVersion: z.literal(1), registrationId: z.uuid(), instanceId: z.uuid(), copyRoot: z.string().min(1), projectSha256: z.string().regex(/^[a-f0-9]{64}$/), markerNonceSha256: z.string().regex(/^[a-f0-9]{64}$/), ownerUid: z.number().int().nonnegative(), nonce: z.string().regex(/^[A-Za-z0-9_-]{43}$/), expiresAt: z.string().datetime() }).strict();
|
|
12
|
+
function sha256(value) { return createHash("sha256").update(value).digest("hex"); }
|
|
13
|
+
function ownerUid() { const uid = process.getuid?.(); if (uid === undefined)
|
|
14
|
+
throw new Error("Unsafe fixture mode requires a POSIX process uid"); return uid; }
|
|
15
|
+
async function projectIdentity(root) {
|
|
16
|
+
const canonical = await realpath(root);
|
|
17
|
+
const config = join(canonical, "project.godot");
|
|
18
|
+
const metadata = await lstat(config);
|
|
19
|
+
if (metadata.isSymbolicLink() || !metadata.isFile())
|
|
20
|
+
throw new Error("Unsafe fixture project.godot must be a regular non-symlink file");
|
|
21
|
+
return { root: canonical, sha256: sha256(await readFile(config)) };
|
|
22
|
+
}
|
|
23
|
+
async function readOwnerOnlyJson(path) {
|
|
24
|
+
const metadata = await lstat(path);
|
|
25
|
+
if (metadata.isSymbolicLink() || !metadata.isFile() || (metadata.mode & 0o077) !== 0 || metadata.size > 1024 * 1024)
|
|
26
|
+
throw new Error("Unsafe authority file must be owner-only, regular, and bounded");
|
|
27
|
+
const handle = await open(path, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
28
|
+
try {
|
|
29
|
+
return JSON.parse(await handle.readFile("utf8"));
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
await handle.close();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async function atomicOwnerOnlyJson(path, value) {
|
|
36
|
+
const parent = dirname(path);
|
|
37
|
+
await mkdir(parent, { recursive: true, mode: 0o700 });
|
|
38
|
+
const existing = await lstat(path).catch(() => undefined);
|
|
39
|
+
if (existing && (existing.isSymbolicLink() || !existing.isFile()))
|
|
40
|
+
throw new Error("Unsafe authority destination must not be a symlink");
|
|
41
|
+
const temporary = join(parent, `.unsafe-${randomUUID()}.tmp`);
|
|
42
|
+
try {
|
|
43
|
+
await writeFile(temporary, `${JSON.stringify(value)}\n`, { mode: 0o600, flag: "wx" });
|
|
44
|
+
await chmod(temporary, 0o600);
|
|
45
|
+
await rename(temporary, path);
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
await rm(temporary, { force: true });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async function registry(path) {
|
|
52
|
+
try {
|
|
53
|
+
return RegistrySchema.parse(await readOwnerOnlyJson(path));
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
if (error.code === "ENOENT")
|
|
57
|
+
return { schemaVersion: 1, registrations: [] };
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export async function registerUnsafeFixture(registryPath, templateRoot, confirmation) {
|
|
62
|
+
if (confirmation !== CONFIRMATION)
|
|
63
|
+
throw new Error("Exact unsandboxed-code confirmation phrase is required");
|
|
64
|
+
const project = await projectIdentity(templateRoot);
|
|
65
|
+
const current = await registry(registryPath);
|
|
66
|
+
if (current.registrations.some((entry) => entry.templateRoot === project.root))
|
|
67
|
+
throw new Error("Unsafe fixture template is already registered");
|
|
68
|
+
const registrationId = randomUUID();
|
|
69
|
+
const markerNonce = randomBytes(32).toString("base64url");
|
|
70
|
+
await atomicOwnerOnlyJson(join(project.root, ".godot-mcp-unsafe-fixture.json"), { schemaVersion: 1, registrationId, role: "template", disposable: true, projectSha256: project.sha256, markerNonce, createdAt: new Date().toISOString() });
|
|
71
|
+
current.registrations.push({ registrationId, templateRoot: project.root, projectSha256: project.sha256, markerNonceSha256: sha256(markerNonce), createdAt: new Date().toISOString() });
|
|
72
|
+
await atomicOwnerOnlyJson(registryPath, current);
|
|
73
|
+
return { registrationId };
|
|
74
|
+
}
|
|
75
|
+
export async function stampUnsafeFixtureCopy(registryPath, copyRoot, registrationId) {
|
|
76
|
+
const current = await registry(registryPath);
|
|
77
|
+
const registration = current.registrations.find((entry) => entry.registrationId === registrationId);
|
|
78
|
+
if (!registration)
|
|
79
|
+
throw new Error("Unsafe fixture registration was not found");
|
|
80
|
+
const project = await projectIdentity(copyRoot);
|
|
81
|
+
if (project.root === registration.templateRoot)
|
|
82
|
+
throw new Error("Unsafe execution requires a disposable copy, not the registered template");
|
|
83
|
+
if (project.sha256 !== registration.projectSha256)
|
|
84
|
+
throw new Error("Unsafe fixture copy project identity differs from its template");
|
|
85
|
+
const templateMarker = MarkerSchema.parse(await readOwnerOnlyJson(join(registration.templateRoot, ".godot-mcp-unsafe-fixture.json")));
|
|
86
|
+
if (templateMarker.registrationId !== registrationId || sha256(templateMarker.markerNonce) !== registration.markerNonceSha256)
|
|
87
|
+
throw new Error("Unsafe fixture template marker changed");
|
|
88
|
+
const instanceId = randomUUID();
|
|
89
|
+
await atomicOwnerOnlyJson(join(project.root, ".godot-mcp-unsafe-fixture.json"), { ...templateMarker, role: "copy", instanceId, createdAt: new Date().toISOString() });
|
|
90
|
+
return { instanceId };
|
|
91
|
+
}
|
|
92
|
+
export async function approveUnsafeFixtureCopy(registryPath, copyRoot, activationDirectory, confirmation, ttlMs = MAX_LEASE_MS) {
|
|
93
|
+
if (confirmation !== CONFIRMATION)
|
|
94
|
+
throw new Error("Exact unsandboxed-code confirmation phrase is required");
|
|
95
|
+
if (!Number.isInteger(ttlMs) || ttlMs < 1_000 || ttlMs > MAX_LEASE_MS)
|
|
96
|
+
throw new Error("Unsafe activation lifetime must be between one second and five minutes");
|
|
97
|
+
const project = await projectIdentity(copyRoot);
|
|
98
|
+
const marker = MarkerSchema.parse(await readOwnerOnlyJson(join(project.root, ".godot-mcp-unsafe-fixture.json")));
|
|
99
|
+
if (marker.role !== "copy" || !marker.instanceId)
|
|
100
|
+
throw new Error("Unsafe activation requires a stamped disposable copy");
|
|
101
|
+
const registration = (await registry(registryPath)).registrations.find((entry) => entry.registrationId === marker.registrationId);
|
|
102
|
+
if (!registration || project.root === registration.templateRoot || project.sha256 !== registration.projectSha256 || sha256(marker.markerNonce) !== registration.markerNonceSha256)
|
|
103
|
+
throw new Error("Unsafe fixture copy no longer matches registration");
|
|
104
|
+
const expiresAt = new Date(Date.now() + ttlMs).toISOString();
|
|
105
|
+
const leasePath = resolve(activationDirectory, `unsafe-activation-${randomUUID()}.json`);
|
|
106
|
+
await atomicOwnerOnlyJson(leasePath, { schemaVersion: 1, registrationId: marker.registrationId, instanceId: marker.instanceId, copyRoot: project.root, projectSha256: project.sha256, markerNonceSha256: registration.markerNonceSha256, ownerUid: ownerUid(), nonce: randomBytes(32).toString("base64url"), expiresAt });
|
|
107
|
+
return { leasePath, expiresAt };
|
|
108
|
+
}
|
|
109
|
+
export async function consumeUnsafeFixtureActivation(registryPath, copyRoot, leasePath, now = Date.now()) {
|
|
110
|
+
const claimedPath = join(dirname(leasePath), `.unsafe-consumed-${randomUUID()}.json`);
|
|
111
|
+
let raw;
|
|
112
|
+
await rename(leasePath, claimedPath);
|
|
113
|
+
try {
|
|
114
|
+
raw = await readOwnerOnlyJson(claimedPath);
|
|
115
|
+
}
|
|
116
|
+
finally {
|
|
117
|
+
await rm(claimedPath, { force: true });
|
|
118
|
+
}
|
|
119
|
+
const lease = LeaseSchema.parse(raw);
|
|
120
|
+
const project = await projectIdentity(copyRoot);
|
|
121
|
+
const marker = MarkerSchema.parse(await readOwnerOnlyJson(join(project.root, ".godot-mcp-unsafe-fixture.json")));
|
|
122
|
+
const registration = (await registry(registryPath)).registrations.find((entry) => entry.registrationId === lease.registrationId);
|
|
123
|
+
if (!registration || lease.ownerUid !== ownerUid() || lease.copyRoot !== project.root || lease.copyRoot === registration.templateRoot || lease.projectSha256 !== project.sha256 || lease.instanceId !== marker.instanceId || lease.markerNonceSha256 !== sha256(marker.markerNonce))
|
|
124
|
+
throw new Error("Unsafe activation identity mismatch");
|
|
125
|
+
if (Date.parse(lease.expiresAt) <= now || Date.parse(lease.expiresAt) > now + MAX_LEASE_MS)
|
|
126
|
+
throw new Error("Unsafe activation expired or has an invalid future lifetime");
|
|
127
|
+
return lease;
|
|
128
|
+
}
|
|
129
|
+
export const UNSAFE_CONFIRMATION_PHRASE = CONFIRMATION;
|
|
130
|
+
//# sourceMappingURL=unsafeFixtureAuthority.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unsafeFixtureAuthority.js","sourceRoot":"","sources":["../../src/unsafe/unsafeFixtureAuthority.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface UnsafeFixtureProcessHandle {
|
|
2
|
+
readonly pid: number;
|
|
3
|
+
readonly fingerprint: string;
|
|
4
|
+
wait(): Promise<number>;
|
|
5
|
+
stop(graceMs?: number): Promise<void>;
|
|
6
|
+
diagnostics(): Buffer;
|
|
7
|
+
outputExceeded(): boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare class UnsafeFixtureProcess implements UnsafeFixtureProcessHandle {
|
|
10
|
+
private readonly child;
|
|
11
|
+
readonly pid: number;
|
|
12
|
+
readonly fingerprint: string;
|
|
13
|
+
private output;
|
|
14
|
+
private exceeded;
|
|
15
|
+
private stopPromise;
|
|
16
|
+
private constructor();
|
|
17
|
+
static launch(input: {
|
|
18
|
+
godotBin: string;
|
|
19
|
+
projectRoot: string;
|
|
20
|
+
scriptPath: string;
|
|
21
|
+
isolationRoot: string;
|
|
22
|
+
signal: AbortSignal;
|
|
23
|
+
environment?: NodeJS.ProcessEnv;
|
|
24
|
+
}): Promise<UnsafeFixtureProcess>;
|
|
25
|
+
diagnostics(): Buffer;
|
|
26
|
+
outputExceeded(): boolean;
|
|
27
|
+
wait(): Promise<number>;
|
|
28
|
+
stop(graceMs?: number): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=unsafeFixtureProcess.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unsafeFixtureProcess.d.ts","sourceRoot":"","sources":["../../src/unsafe/unsafeFixtureProcess.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,WAAW,IAAI,MAAM,CAAC;IACtB,cAAc,IAAI,OAAO,CAAC;CAC3B;AASD,qBAAa,oBAAqB,YAAW,0BAA0B;IAKjD,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM;IAJ5G,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAA4B;IAE/C,OAAO;WAEM,MAAM,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAgDrM,WAAW,IAAI,MAAM;IACrB,cAAc,IAAI,OAAO;IACzB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAEvB,IAAI,CAAC,OAAO,SAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAerC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { mkdir } from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { projectProcessFingerprint } from "../project/projectProcess.js";
|
|
5
|
+
import { childHasExited, shouldRefuseProcessSignal } from "../runtime/runtimeProcess.js";
|
|
6
|
+
const MAX_OUTPUT_BYTES = 4 * 1024 * 1024;
|
|
7
|
+
function waitForExit(child) {
|
|
8
|
+
if (childHasExited(child))
|
|
9
|
+
return Promise.resolve(child.exitCode ?? 1);
|
|
10
|
+
return new Promise((resolveWait, reject) => { child.once("error", reject); child.once("close", (code) => resolveWait(code ?? 1)); });
|
|
11
|
+
}
|
|
12
|
+
export class UnsafeFixtureProcess {
|
|
13
|
+
child;
|
|
14
|
+
pid;
|
|
15
|
+
fingerprint;
|
|
16
|
+
output = Buffer.alloc(0);
|
|
17
|
+
exceeded = false;
|
|
18
|
+
stopPromise;
|
|
19
|
+
constructor(child, pid, fingerprint) {
|
|
20
|
+
this.child = child;
|
|
21
|
+
this.pid = pid;
|
|
22
|
+
this.fingerprint = fingerprint;
|
|
23
|
+
}
|
|
24
|
+
static async launch(input) {
|
|
25
|
+
if (input.signal.aborted)
|
|
26
|
+
throw input.signal.reason;
|
|
27
|
+
const home = join(input.isolationRoot, "home");
|
|
28
|
+
const runtime = join(input.isolationRoot, "runtime");
|
|
29
|
+
const config = join(home, ".config");
|
|
30
|
+
const cache = join(home, ".cache");
|
|
31
|
+
const data = join(home, ".local/share");
|
|
32
|
+
const temporary = join(input.isolationRoot, "tmp");
|
|
33
|
+
await Promise.all([home, runtime, config, cache, data, temporary].map((path) => mkdir(path, { recursive: true, mode: 0o700 })));
|
|
34
|
+
const source = input.environment ?? process.env;
|
|
35
|
+
const env = {
|
|
36
|
+
HOME: home,
|
|
37
|
+
XDG_CONFIG_HOME: config,
|
|
38
|
+
XDG_CACHE_HOME: cache,
|
|
39
|
+
XDG_DATA_HOME: data,
|
|
40
|
+
XDG_RUNTIME_DIR: runtime,
|
|
41
|
+
TMPDIR: temporary,
|
|
42
|
+
...(source.PATH ? { PATH: source.PATH } : {}),
|
|
43
|
+
...(source.LANG ? { LANG: source.LANG } : {}),
|
|
44
|
+
};
|
|
45
|
+
if (input.signal.aborted)
|
|
46
|
+
throw input.signal.reason;
|
|
47
|
+
const child = spawn(input.godotBin, ["--headless", "--path", input.projectRoot, "--script", input.scriptPath], { env, stdio: ["ignore", "pipe", "pipe"] });
|
|
48
|
+
const abort = () => { if (!childHasExited(child))
|
|
49
|
+
child.kill("SIGKILL"); };
|
|
50
|
+
input.signal.addEventListener("abort", abort, { once: true });
|
|
51
|
+
try {
|
|
52
|
+
await new Promise((resolveSpawn, reject) => { child.once("spawn", resolveSpawn); child.once("error", reject); });
|
|
53
|
+
if (input.signal.aborted)
|
|
54
|
+
throw input.signal.reason;
|
|
55
|
+
if (!child.pid)
|
|
56
|
+
throw new Error("Unsafe fixture process did not report a PID");
|
|
57
|
+
let fingerprint;
|
|
58
|
+
try {
|
|
59
|
+
fingerprint = await projectProcessFingerprint(child.pid);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
if (input.signal.aborted)
|
|
63
|
+
throw input.signal.reason;
|
|
64
|
+
if (childHasExited(child))
|
|
65
|
+
fingerprint = `${child.pid}:exited:${child.exitCode ?? "unknown"}`;
|
|
66
|
+
else
|
|
67
|
+
throw error;
|
|
68
|
+
}
|
|
69
|
+
if (input.signal.aborted)
|
|
70
|
+
throw input.signal.reason;
|
|
71
|
+
const owned = new UnsafeFixtureProcess(child, child.pid, fingerprint);
|
|
72
|
+
const append = (chunk) => {
|
|
73
|
+
const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
74
|
+
const remaining = MAX_OUTPUT_BYTES - owned.output.byteLength;
|
|
75
|
+
if (remaining > 0)
|
|
76
|
+
owned.output = Buffer.concat([owned.output, bytes.subarray(0, remaining)]);
|
|
77
|
+
if (bytes.byteLength > remaining && !owned.exceeded) {
|
|
78
|
+
owned.exceeded = true;
|
|
79
|
+
void owned.stop().catch(() => undefined);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
child.stdout?.on("data", append);
|
|
83
|
+
child.stderr?.on("data", append);
|
|
84
|
+
return owned;
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
abort();
|
|
88
|
+
await waitForExit(child).catch(() => undefined);
|
|
89
|
+
throw error;
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
input.signal.removeEventListener("abort", abort);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
diagnostics() { return Buffer.from(this.output); }
|
|
96
|
+
outputExceeded() { return this.exceeded; }
|
|
97
|
+
wait() { return waitForExit(this.child); }
|
|
98
|
+
stop(graceMs = 1_000) {
|
|
99
|
+
if (!this.stopPromise)
|
|
100
|
+
this.stopPromise = (async () => {
|
|
101
|
+
if (childHasExited(this.child))
|
|
102
|
+
return;
|
|
103
|
+
const current = await projectProcessFingerprint(this.pid).catch(() => "");
|
|
104
|
+
if (shouldRefuseProcessSignal(this.child, current, this.fingerprint))
|
|
105
|
+
throw new Error("Unsafe process identity changed; refusing to signal");
|
|
106
|
+
this.child.kill("SIGTERM");
|
|
107
|
+
const stopped = await Promise.race([waitForExit(this.child).then(() => true), new Promise((resolveWait) => setTimeout(() => resolveWait(false), graceMs))]);
|
|
108
|
+
if (!stopped && !childHasExited(this.child)) {
|
|
109
|
+
const beforeKill = await projectProcessFingerprint(this.pid).catch(() => "");
|
|
110
|
+
if (shouldRefuseProcessSignal(this.child, beforeKill, this.fingerprint))
|
|
111
|
+
throw new Error("Unsafe process identity changed before escalation");
|
|
112
|
+
this.child.kill("SIGKILL");
|
|
113
|
+
await waitForExit(this.child);
|
|
114
|
+
}
|
|
115
|
+
})();
|
|
116
|
+
return this.stopPromise;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=unsafeFixtureProcess.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unsafeFixtureProcess.js","sourceRoot":"","sources":["../../src/unsafe/unsafeFixtureProcess.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type UnsafeFixtureJobReceipt, type UnsafeFixtureJobResult, type UnsafeFixtureOperationInput } from "@godot-mcp/protocol";
|
|
2
|
+
import { EvidenceStore } from "../evidence/evidenceStore.js";
|
|
3
|
+
import type { UnsafeActivation } from "./unsafeFixtureAuthority.js";
|
|
4
|
+
import type { UnsafeFixtureProcessHandle } from "./unsafeFixtureProcess.js";
|
|
5
|
+
export interface UnsafeFixtureServiceDependencies {
|
|
6
|
+
activation: UnsafeActivation;
|
|
7
|
+
sessionId(): string | null;
|
|
8
|
+
launch(input: {
|
|
9
|
+
projectRoot: string;
|
|
10
|
+
scriptPath: string;
|
|
11
|
+
isolationRoot: string;
|
|
12
|
+
signal: AbortSignal;
|
|
13
|
+
}): Promise<UnsafeFixtureProcessHandle>;
|
|
14
|
+
evidence?: EvidenceStore;
|
|
15
|
+
now?: () => number;
|
|
16
|
+
}
|
|
17
|
+
export declare class UnsafeFixtureService {
|
|
18
|
+
private readonly dependencies;
|
|
19
|
+
private job;
|
|
20
|
+
private runPromise;
|
|
21
|
+
private readonly now;
|
|
22
|
+
private readonly evidence;
|
|
23
|
+
constructor(dependencies: UnsafeFixtureServiceDependencies);
|
|
24
|
+
isActive(): boolean;
|
|
25
|
+
blocksExport(): boolean;
|
|
26
|
+
initialize(): Promise<void>;
|
|
27
|
+
execute(inputValue: UnsafeFixtureOperationInput, correlationId: string): Promise<{
|
|
28
|
+
data: unknown;
|
|
29
|
+
evidence?: string[];
|
|
30
|
+
}>;
|
|
31
|
+
start(source: string, deadlineMs: number): UnsafeFixtureJobReceipt;
|
|
32
|
+
status(token: string): UnsafeFixtureJobReceipt;
|
|
33
|
+
cancel(token: string): UnsafeFixtureJobReceipt;
|
|
34
|
+
result(token: string): UnsafeFixtureJobResult;
|
|
35
|
+
close(): Promise<void>;
|
|
36
|
+
private requireJob;
|
|
37
|
+
private receipt;
|
|
38
|
+
private run;
|
|
39
|
+
private interruptible;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=unsafeFixtureService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unsafeFixtureService.d.ts","sourceRoot":"","sources":["../../src/unsafe/unsafeFixtureService.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkG,KAAK,uBAAuB,EAAE,KAAK,sBAAsB,EAAE,KAAK,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAGlO,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAK5E,MAAM,WAAW,gCAAgC;IAC/C,UAAU,EAAE,gBAAgB,CAAC;IAC7B,SAAS,IAAI,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC5I,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAiBD,qBAAa,oBAAoB;IAMnB,OAAO,CAAC,QAAQ,CAAC,YAAY;IALzC,OAAO,CAAC,GAAG,CAAwB;IACnC,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAEZ,YAAY,EAAE,gCAAgC;IAK3E,QAAQ,IAAI,OAAO;IACnB,YAAY,IAAI,OAAO;IAEjB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B,OAAO,CAAC,UAAU,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAS9H,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,uBAAuB;IAWlE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,uBAAuB;IAC9C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,uBAAuB;IAC9C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB;IAEvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAE5B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,OAAO;YAED,GAAG;YAqCH,aAAa;CAM5B"}
|