@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.
Files changed (156) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +105 -2
  3. package/dist/audit/jsonlAuditSink.d.ts +33 -0
  4. package/dist/audit/jsonlAuditSink.d.ts.map +1 -0
  5. package/dist/audit/jsonlAuditSink.js +57 -0
  6. package/dist/audit/jsonlAuditSink.js.map +1 -0
  7. package/dist/audit/redact.d.ts +2 -0
  8. package/dist/audit/redact.d.ts.map +1 -0
  9. package/dist/audit/redact.js +44 -0
  10. package/dist/audit/redact.js.map +1 -0
  11. package/dist/auth/pairingDescriptor.d.ts +44 -0
  12. package/dist/auth/pairingDescriptor.d.ts.map +1 -0
  13. package/dist/auth/pairingDescriptor.js +91 -0
  14. package/dist/auth/pairingDescriptor.js.map +1 -0
  15. package/dist/auth/runtimeDirectory.d.ts +3 -0
  16. package/dist/auth/runtimeDirectory.d.ts.map +1 -0
  17. package/dist/auth/runtimeDirectory.js +30 -0
  18. package/dist/auth/runtimeDirectory.js.map +1 -0
  19. package/dist/auth/sessionCrypto.d.ts +18 -0
  20. package/dist/auth/sessionCrypto.d.ts.map +1 -0
  21. package/dist/auth/sessionCrypto.js +118 -0
  22. package/dist/auth/sessionCrypto.js.map +1 -0
  23. package/dist/editor/editorMutationService.d.ts +21 -0
  24. package/dist/editor/editorMutationService.d.ts.map +1 -0
  25. package/dist/editor/editorMutationService.js +120 -0
  26. package/dist/editor/editorMutationService.js.map +1 -0
  27. package/dist/editor/mutationLedger.d.ts +30 -0
  28. package/dist/editor/mutationLedger.d.ts.map +1 -0
  29. package/dist/editor/mutationLedger.js +133 -0
  30. package/dist/editor/mutationLedger.js.map +1 -0
  31. package/dist/errors.d.ts +12 -0
  32. package/dist/errors.d.ts.map +1 -0
  33. package/dist/errors.js +23 -0
  34. package/dist/errors.js.map +1 -0
  35. package/dist/evidence/evidenceStore.d.ts +63 -0
  36. package/dist/evidence/evidenceStore.d.ts.map +1 -0
  37. package/dist/evidence/evidenceStore.js +350 -0
  38. package/dist/evidence/evidenceStore.js.map +1 -0
  39. package/dist/extensions/extensionRegistry.d.ts +33 -0
  40. package/dist/extensions/extensionRegistry.d.ts.map +1 -0
  41. package/dist/extensions/extensionRegistry.js +37 -0
  42. package/dist/extensions/extensionRegistry.js.map +1 -0
  43. package/dist/help/coreHelp.d.ts +10 -0
  44. package/dist/help/coreHelp.d.ts.map +1 -0
  45. package/dist/help/coreHelp.js +82 -0
  46. package/dist/help/coreHelp.js.map +1 -0
  47. package/dist/index.d.ts +37 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +37 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/policy/authorize.d.ts +5 -0
  52. package/dist/policy/authorize.d.ts.map +1 -0
  53. package/dist/policy/authorize.js +19 -0
  54. package/dist/policy/authorize.js.map +1 -0
  55. package/dist/policy/capabilities.d.ts +36 -0
  56. package/dist/policy/capabilities.d.ts.map +1 -0
  57. package/dist/policy/capabilities.js +129 -0
  58. package/dist/policy/capabilities.js.map +1 -0
  59. package/dist/project/artifactStore.d.ts +32 -0
  60. package/dist/project/artifactStore.d.ts.map +1 -0
  61. package/dist/project/artifactStore.js +172 -0
  62. package/dist/project/artifactStore.js.map +1 -0
  63. package/dist/project/pathPolicy.d.ts +4 -0
  64. package/dist/project/pathPolicy.d.ts.map +1 -0
  65. package/dist/project/pathPolicy.js +74 -0
  66. package/dist/project/pathPolicy.js.map +1 -0
  67. package/dist/project/projectConfig.d.ts +10 -0
  68. package/dist/project/projectConfig.d.ts.map +1 -0
  69. package/dist/project/projectConfig.js +63 -0
  70. package/dist/project/projectConfig.js.map +1 -0
  71. package/dist/project/projectIdentity.d.ts +8 -0
  72. package/dist/project/projectIdentity.d.ts.map +1 -0
  73. package/dist/project/projectIdentity.js +58 -0
  74. package/dist/project/projectIdentity.js.map +1 -0
  75. package/dist/project/projectJobJournal.d.ts +49 -0
  76. package/dist/project/projectJobJournal.d.ts.map +1 -0
  77. package/dist/project/projectJobJournal.js +67 -0
  78. package/dist/project/projectJobJournal.js.map +1 -0
  79. package/dist/project/projectJobService.d.ts +52 -0
  80. package/dist/project/projectJobService.d.ts.map +1 -0
  81. package/dist/project/projectJobService.js +289 -0
  82. package/dist/project/projectJobService.js.map +1 -0
  83. package/dist/project/projectMutationService.d.ts +40 -0
  84. package/dist/project/projectMutationService.d.ts.map +1 -0
  85. package/dist/project/projectMutationService.js +145 -0
  86. package/dist/project/projectMutationService.js.map +1 -0
  87. package/dist/project/projectPreflight.d.ts +7 -0
  88. package/dist/project/projectPreflight.d.ts.map +1 -0
  89. package/dist/project/projectPreflight.js +50 -0
  90. package/dist/project/projectPreflight.js.map +1 -0
  91. package/dist/project/projectProcess.d.ts +40 -0
  92. package/dist/project/projectProcess.d.ts.map +1 -0
  93. package/dist/project/projectProcess.js +196 -0
  94. package/dist/project/projectProcess.js.map +1 -0
  95. package/dist/project/projectService.d.ts +20 -0
  96. package/dist/project/projectService.d.ts.map +1 -0
  97. package/dist/project/projectService.js +35 -0
  98. package/dist/project/projectService.js.map +1 -0
  99. package/dist/project/secureJournalFile.d.ts +3 -0
  100. package/dist/project/secureJournalFile.d.ts.map +1 -0
  101. package/dist/project/secureJournalFile.js +56 -0
  102. package/dist/project/secureJournalFile.js.map +1 -0
  103. package/dist/runtime/debugTokenStore.d.ts +41 -0
  104. package/dist/runtime/debugTokenStore.d.ts.map +1 -0
  105. package/dist/runtime/debugTokenStore.js +105 -0
  106. package/dist/runtime/debugTokenStore.js.map +1 -0
  107. package/dist/runtime/debuggerClient.d.ts +14 -0
  108. package/dist/runtime/debuggerClient.d.ts.map +1 -0
  109. package/dist/runtime/debuggerClient.js +21 -0
  110. package/dist/runtime/debuggerClient.js.map +1 -0
  111. package/dist/runtime/inputReceipt.d.ts +15 -0
  112. package/dist/runtime/inputReceipt.d.ts.map +1 -0
  113. package/dist/runtime/inputReceipt.js +36 -0
  114. package/dist/runtime/inputReceipt.js.map +1 -0
  115. package/dist/runtime/runtimeDescriptor.d.ts +50 -0
  116. package/dist/runtime/runtimeDescriptor.d.ts.map +1 -0
  117. package/dist/runtime/runtimeDescriptor.js +175 -0
  118. package/dist/runtime/runtimeDescriptor.js.map +1 -0
  119. package/dist/runtime/runtimeProcess.d.ts +39 -0
  120. package/dist/runtime/runtimeProcess.d.ts.map +1 -0
  121. package/dist/runtime/runtimeProcess.js +180 -0
  122. package/dist/runtime/runtimeProcess.js.map +1 -0
  123. package/dist/runtime/runtimeService.d.ts +130 -0
  124. package/dist/runtime/runtimeService.d.ts.map +1 -0
  125. package/dist/runtime/runtimeService.js +919 -0
  126. package/dist/runtime/runtimeService.js.map +1 -0
  127. package/dist/session/sessionService.d.ts +52 -0
  128. package/dist/session/sessionService.d.ts.map +1 -0
  129. package/dist/session/sessionService.js +72 -0
  130. package/dist/session/sessionService.js.map +1 -0
  131. package/dist/unsafe/unsafeFixtureAuthority.d.ts +27 -0
  132. package/dist/unsafe/unsafeFixtureAuthority.d.ts.map +1 -0
  133. package/dist/unsafe/unsafeFixtureAuthority.js +130 -0
  134. package/dist/unsafe/unsafeFixtureAuthority.js.map +1 -0
  135. package/dist/unsafe/unsafeFixtureProcess.d.ts +30 -0
  136. package/dist/unsafe/unsafeFixtureProcess.d.ts.map +1 -0
  137. package/dist/unsafe/unsafeFixtureProcess.js +119 -0
  138. package/dist/unsafe/unsafeFixtureProcess.js.map +1 -0
  139. package/dist/unsafe/unsafeFixtureService.d.ts +41 -0
  140. package/dist/unsafe/unsafeFixtureService.d.ts.map +1 -0
  141. package/dist/unsafe/unsafeFixtureService.js +162 -0
  142. package/dist/unsafe/unsafeFixtureService.js.map +1 -0
  143. package/dist/visual/pngComparison.d.ts +12 -0
  144. package/dist/visual/pngComparison.d.ts.map +1 -0
  145. package/dist/visual/pngComparison.js +136 -0
  146. package/dist/visual/pngComparison.js.map +1 -0
  147. package/dist/visual/scenarioService.d.ts +50 -0
  148. package/dist/visual/scenarioService.d.ts.map +1 -0
  149. package/dist/visual/scenarioService.js +421 -0
  150. package/dist/visual/scenarioService.js.map +1 -0
  151. package/dist/visual/visualService.d.ts +27 -0
  152. package/dist/visual/visualService.d.ts.map +1 -0
  153. package/dist/visual/visualService.js +70 -0
  154. package/dist/visual/visualService.js.map +1 -0
  155. package/package.json +26 -6
  156. 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":"AAAA,OAAO,EACL,uBAAuB,EACvB,eAAe,GAGhB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,GAEpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,WAAW,EAAqC,MAAM,qBAAqB,CAAC;AAwCrF,MAAM,OAAO,cAAc;IAMN;IACA;IACA;IAPX,KAAK,GAAiB,mBAAmB,CAAC;IAC1C,UAAU,GAA4B,IAAI,CAAC;IAC3C,aAAa,GAAiC,IAAI,CAAC;IAE3D,YACmB,OAAwB,EACxB,MAAqB,EACrB,kBAA+C;QAF/C,YAAO,GAAP,OAAO,CAAiB;QACxB,WAAM,GAAN,MAAM,CAAe;QACrB,uBAAkB,GAAlB,kBAAkB,CAA6B;IAC/D,CAAC;IAEJ,UAAU,CAAC,KAAuB;QAChC,IAAI,CAAC,UAAU,GAAG;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;YAC9C,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;IAC1B,CAAC;IAED,cAAc,CAAC,YAA0C,IAAI;QAC3D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC;IAC9B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACxB,CAAC;IAED,QAAQ;QACN,OAAO;YACL,cAAc,EAAE,eAAe;YAC/B,eAAe,EAAE,uBAAuB;YACxC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB;YACrD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACxE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI;YAC3D,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC;IACJ,CAAC;IAED,YAAY;QACV,OAAO;YACL,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7B,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7B,UAAU,EAAE,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;SAC7E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC;QAC3C,MAAM,SAAS,GAAgB;YAC7B,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;YACjC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,2BAA2B,IAAI,CAAC,KAAK,EAAE;SAC9F,CAAC;QACF,OAAO;YACL,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,QAAQ;YACzC,MAAM,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC;SAC3E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAqB;QACxB,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;CACF"}
@@ -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"}