@eyeauras/insight-cli 0.0.0-stage → 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 (164) hide show
  1. package/.cli-package-build.json +1 -0
  2. package/LICENSE +21 -0
  3. package/README.md +54 -2
  4. package/SKILL.md +55 -0
  5. package/dist/src/administration-results.d.ts +1 -0
  6. package/dist/src/administration-results.js +84 -0
  7. package/dist/src/administration.d.ts +14 -0
  8. package/dist/src/administration.js +120 -0
  9. package/dist/src/archive-contract.d.ts +6 -0
  10. package/dist/src/archive-contract.js +108 -0
  11. package/dist/src/archive.d.ts +12 -0
  12. package/dist/src/archive.js +116 -0
  13. package/dist/src/arguments.d.ts +14 -0
  14. package/dist/src/arguments.js +62 -0
  15. package/dist/src/artifacts.d.ts +17 -0
  16. package/dist/src/artifacts.js +115 -0
  17. package/dist/src/bin.d.ts +2 -0
  18. package/dist/src/bin.js +4 -0
  19. package/dist/src/cli.d.ts +10 -0
  20. package/dist/src/cli.js +387 -0
  21. package/dist/src/comment-effects.d.ts +3 -0
  22. package/dist/src/comment-effects.js +55 -0
  23. package/dist/src/contexts.d.ts +115 -0
  24. package/dist/src/contexts.js +1068 -0
  25. package/dist/src/coordinator.d.ts +41 -0
  26. package/dist/src/coordinator.js +160 -0
  27. package/dist/src/cross-results.d.ts +14 -0
  28. package/dist/src/cross-results.js +71 -0
  29. package/dist/src/cross.d.ts +3 -0
  30. package/dist/src/cross.js +43 -0
  31. package/dist/src/data-effects.d.ts +3 -0
  32. package/dist/src/data-effects.js +103 -0
  33. package/dist/src/debugger-results.d.ts +4 -0
  34. package/dist/src/debugger-results.js +151 -0
  35. package/dist/src/debugger-supervisor.d.ts +1 -0
  36. package/dist/src/debugger-supervisor.js +136 -0
  37. package/dist/src/debugger.d.ts +21 -0
  38. package/dist/src/debugger.js +267 -0
  39. package/dist/src/documentation-effects.d.ts +5 -0
  40. package/dist/src/documentation-effects.js +56 -0
  41. package/dist/src/extensions.d.ts +64 -0
  42. package/dist/src/extensions.js +289 -0
  43. package/dist/src/function-effects.d.ts +4 -0
  44. package/dist/src/function-effects.js +112 -0
  45. package/dist/src/ghidra.d.ts +50 -0
  46. package/dist/src/ghidra.js +468 -0
  47. package/dist/src/index.d.ts +2 -0
  48. package/dist/src/index.js +1 -0
  49. package/dist/src/initial-model.d.ts +6 -0
  50. package/dist/src/initial-model.js +85 -0
  51. package/dist/src/json.d.ts +2 -0
  52. package/dist/src/json.js +8 -0
  53. package/dist/src/lifecycle.d.ts +49 -0
  54. package/dist/src/lifecycle.js +148 -0
  55. package/dist/src/memory-inputs.d.ts +8 -0
  56. package/dist/src/memory-inputs.js +56 -0
  57. package/dist/src/merge.d.ts +29 -0
  58. package/dist/src/merge.js +66 -0
  59. package/dist/src/model.d.ts +74 -0
  60. package/dist/src/model.js +67 -0
  61. package/dist/src/mutation-effects.d.ts +4 -0
  62. package/dist/src/mutation-effects.js +321 -0
  63. package/dist/src/mutation-inputs.d.ts +2 -0
  64. package/dist/src/mutation-inputs.js +71 -0
  65. package/dist/src/mutations.d.ts +4 -0
  66. package/dist/src/mutations.js +53 -0
  67. package/dist/src/native-inputs.d.ts +28 -0
  68. package/dist/src/native-inputs.js +171 -0
  69. package/dist/src/native-queries.d.ts +2 -0
  70. package/dist/src/native-queries.js +29 -0
  71. package/dist/src/projects.d.ts +31 -0
  72. package/dist/src/projects.js +301 -0
  73. package/dist/src/prototype-cli.d.ts +8 -0
  74. package/dist/src/prototype-cli.js +155 -0
  75. package/dist/src/queries.d.ts +5 -0
  76. package/dist/src/queries.js +84 -0
  77. package/dist/src/query-policy.d.ts +6 -0
  78. package/dist/src/query-policy.js +72 -0
  79. package/dist/src/query-results.d.ts +2 -0
  80. package/dist/src/query-results.js +224 -0
  81. package/dist/src/research.d.ts +184 -0
  82. package/dist/src/research.js +808 -0
  83. package/dist/src/saved-materials.d.ts +12 -0
  84. package/dist/src/saved-materials.js +196 -0
  85. package/dist/src/scripts.d.ts +19 -0
  86. package/dist/src/scripts.js +79 -0
  87. package/dist/src/sdk-contracts.d.ts +13 -0
  88. package/dist/src/sdk-contracts.js +37 -0
  89. package/dist/src/sdk-files.d.ts +29 -0
  90. package/dist/src/sdk-files.js +249 -0
  91. package/dist/src/sdk.d.ts +4 -0
  92. package/dist/src/sdk.js +125 -0
  93. package/dist/src/server.d.ts +44 -0
  94. package/dist/src/server.js +455 -0
  95. package/dist/src/store.d.ts +33 -0
  96. package/dist/src/store.js +178 -0
  97. package/dist/src/sync-policy.d.ts +22 -0
  98. package/dist/src/sync-policy.js +123 -0
  99. package/dist/src/transport.d.ts +23 -0
  100. package/dist/src/transport.js +135 -0
  101. package/dist/src/ui-results.d.ts +2 -0
  102. package/dist/src/ui-results.js +80 -0
  103. package/dist/src/ui.d.ts +17 -0
  104. package/dist/src/ui.js +88 -0
  105. package/dist/src/utility.d.ts +14 -0
  106. package/dist/src/utility.js +43 -0
  107. package/dist/src/version-tracking.d.ts +57 -0
  108. package/dist/src/version-tracking.js +200 -0
  109. package/dist/src/workspace.d.ts +199 -0
  110. package/dist/src/workspace.js +564 -0
  111. package/package.json +45 -4
  112. package/references/InsightRepositoryProbe.java +55 -0
  113. package/references/administration.md +33 -0
  114. package/references/archive.md +32 -0
  115. package/references/artifacts.md +47 -0
  116. package/references/debugger.md +40 -0
  117. package/references/extensions-and-sync.md +124 -0
  118. package/references/mutations.json +1424 -0
  119. package/references/native/InsightApplyDocumentation.java +48 -0
  120. package/references/native/InsightArchivePayloads.java +36 -0
  121. package/references/native/InsightBlockTransfer.java +57 -0
  122. package/references/native/InsightEmulation.java +93 -0
  123. package/references/native/InsightExtensions.java +36 -0
  124. package/references/native/InsightFunctionDatabases.java +98 -0
  125. package/references/native/InsightGuiMain.java +32 -0
  126. package/references/native/InsightHeadlessMain.java +10 -0
  127. package/references/native/InsightInitialImport.java +42 -0
  128. package/references/native/InsightInitialJournal.java +48 -0
  129. package/references/native/InsightInitialPublication.java +142 -0
  130. package/references/native/InsightKeytool.java +16 -0
  131. package/references/native/InsightNativeReceipt.java +31 -0
  132. package/references/native/InsightPlugins.java +34 -0
  133. package/references/native/InsightProjectFiles.java +92 -0
  134. package/references/native/InsightPublicationRecovery.java +63 -0
  135. package/references/native/InsightPythonWheels.java +31 -0
  136. package/references/native/InsightResearchQueries.java +188 -0
  137. package/references/native/InsightSdkFiles.java +142 -0
  138. package/references/native/InsightSdkScript.java +31 -0
  139. package/references/native/InsightSdkTools.java +338 -0
  140. package/references/native/InsightSdkTypes.java +132 -0
  141. package/references/native/InsightServerAdministration.java +82 -0
  142. package/references/native/InsightServerInit.java +62 -0
  143. package/references/native/InsightServerMain.java +43 -0
  144. package/references/native/InsightServerProbe.java +29 -0
  145. package/references/native/InsightSnapshotFields.java +68 -0
  146. package/references/native/InsightSnapshotInspect.java +189 -0
  147. package/references/native/InsightSnapshotPublisher.java +123 -0
  148. package/references/native/InsightStartDebugger.java +28 -0
  149. package/references/native/InsightStopDebugger.java +20 -0
  150. package/references/native/InsightTraceInspect.java +24 -0
  151. package/references/native/InsightTraceState.java +130 -0
  152. package/references/native/InsightTraceTools.java +114 -0
  153. package/references/native/InsightVersionTracking.java +91 -0
  154. package/references/native-workflows.md +112 -0
  155. package/references/queries.json +1761 -0
  156. package/references/query-semantics.md +96 -0
  157. package/references/recovery.md +53 -0
  158. package/references/research.md +101 -0
  159. package/references/setup.md +47 -0
  160. package/runtime/GhidraMCP-7.0.0.jar +0 -0
  161. package/runtime/GhidraMCP-LICENSE +202 -0
  162. package/runtime/GhidraMCP-NOTICE +10 -0
  163. package/runtime/provenance.json +11 -0
  164. package/skills/insight-re/SKILL.md +108 -0
@@ -0,0 +1,55 @@
1
+ import { address } from './research.js';
2
+ import { object, fail } from './model.js';
3
+ const normalize = (value) => value === '' ? null : value;
4
+ export async function verifyComments(backend, snapshot, path, p) {
5
+ if (!backend.inspect)
6
+ fail('configuration', 'Batch comments require saved-state inspection.');
7
+ const inspect = (kind, parameters) => backend.inspect(snapshot, { kind, ...parameters });
8
+ if (path === '/clear_function_comments') {
9
+ const ref = String(p.function);
10
+ let selector;
11
+ try {
12
+ selector = { address: address(ref) };
13
+ }
14
+ catch {
15
+ selector = { name: ref };
16
+ }
17
+ const value = await inspect('function_comments', selector);
18
+ if (p.clear_plate !== false && value.plate !== null)
19
+ fail('partial', 'Saved function plate comment was not cleared.');
20
+ if (!Array.isArray(value.comments))
21
+ fail('partial', 'Saved function comment inventory is absent.');
22
+ for (const item of value.comments) {
23
+ const comment = object(item);
24
+ if (comment.kind === 'eol' && p.clear_eol !== false || comment.kind === 'pre' && p.clear_pre !== false)
25
+ fail('partial', 'Requested function comments remain in saved state.');
26
+ }
27
+ return value;
28
+ }
29
+ const verified = [];
30
+ for (const [parameter, kind] of [['decompiler_comments', 'pre'], ['disassembly_comments', 'eol']]) {
31
+ const requested = p[parameter] ?? [];
32
+ if (!Array.isArray(requested))
33
+ fail('invalid', 'Batch comments require arrays of {address,comment}.');
34
+ const expected = new Map();
35
+ for (const raw of requested) {
36
+ const item = object(raw);
37
+ if (typeof item.comment !== 'string')
38
+ fail('invalid', 'Each batch comment requires text or empty text to clear.');
39
+ expected.set(address(item.address), normalize(item.comment));
40
+ }
41
+ for (const [at, text] of expected) {
42
+ const value = await inspect('comments', { address: at });
43
+ if (value[kind] !== text)
44
+ fail('partial', 'Saved batch comment differs from the requested text.');
45
+ verified.push({ address: at, kind, text });
46
+ }
47
+ }
48
+ if (p.plate_comment !== undefined && p.plate_comment !== null && !(path === '/batch_apply_documentation' && p.plate_comment === '')) {
49
+ const value = await inspect('comments', { address: p.address });
50
+ if (value.plate !== normalize(p.plate_comment))
51
+ fail('partial', 'Saved batch plate comment differs from the requested text.');
52
+ verified.push({ address: p.address, kind: 'plate', text: value.plate });
53
+ }
54
+ return { comments: verified };
55
+ }
@@ -0,0 +1,115 @@
1
+ import type { CommandContext } from '@eyeauras/cli-factory';
2
+ import { type ChildProcess } from 'node:child_process';
3
+ import { type NativeInputs } from './native-inputs.js';
4
+ import { GhidraServer } from './server.js';
5
+ import { Workspace, type Scope, type GhidraContext, type ScalarChange, type Publication, type DebuggerState } from './workspace.js';
6
+ import { type Artifact } from './artifacts.js';
7
+ import { HttpBridge } from './transport.js';
8
+ export type ToolMode = 'headless' | 'gui';
9
+ interface ProcessBinding {
10
+ pid: number;
11
+ endpoint: string;
12
+ root: string;
13
+ target: string;
14
+ context?: string;
15
+ mode: ToolMode;
16
+ program: string;
17
+ tokenSecret: string;
18
+ runtimeFingerprint: string;
19
+ kind: 'context' | 'shared' | 'bootstrap' | 'candidate';
20
+ baseRevision?: number;
21
+ viewEpoch?: number;
22
+ }
23
+ interface Running {
24
+ binding: ProcessBinding;
25
+ http: HttpBridge;
26
+ child?: ChildProcess;
27
+ }
28
+ /** Isolated native contexts. This layer has no agent-facing instance/worker selector. */
29
+ export declare class GhidraContexts {
30
+ private readonly workspace;
31
+ private readonly inputs;
32
+ private readonly c;
33
+ private readonly running;
34
+ private readonly modelTasks;
35
+ private readonly ownedServer;
36
+ private readonly capacity;
37
+ constructor(workspace: Workspace, inputs: NativeInputs, c: CommandContext, running?: Map<string, Running>, modelTasks?: Map<string, Promise<void>>, ownedServer?: GhidraServer, capacity?: {
38
+ slots: Set<string>;
39
+ inventory?: Promise<void>;
40
+ });
41
+ fork(c: CommandContext): GhidraContexts;
42
+ private directory;
43
+ private server;
44
+ administration(operation: string, parameters: Record<string, unknown>): Promise<Record<string, unknown>>;
45
+ sdkFile(operation: string, parameters: Record<string, unknown>): Promise<Record<string, unknown>>;
46
+ private prepareRoot;
47
+ private launch;
48
+ private verified;
49
+ private source;
50
+ private stopRecord;
51
+ private debuggerReleased;
52
+ private capture;
53
+ private shared;
54
+ private retireLegacyBootstrap;
55
+ private initialModel;
56
+ private model;
57
+ private privateCopy;
58
+ open(scope: Scope, request?: string): Promise<GhidraContext>;
59
+ private selected;
60
+ call(scope: Scope, operation: string, parameters?: Record<string, unknown>): Promise<unknown>;
61
+ saved(scope: Scope): Promise<Artifact>;
62
+ scripts(scope: Scope, filter: string, limit: number, offset: number): Promise<import("./scripts.js").ScriptPage>;
63
+ inspect(snapshot: Artifact, parameters: Record<string, unknown>): Promise<Record<string, unknown>>;
64
+ private removePeer;
65
+ private reconcilePeers;
66
+ private withPeer;
67
+ pair(selected: Scope, other: Scope, snapshot: Artifact, operation: string, parameters: Record<string, unknown>): Promise<unknown>;
68
+ transfer(selected: Scope, source: Artifact, dryRun: boolean): Promise<unknown>;
69
+ transferCheck(selected: Scope, source: Artifact, candidate: Artifact): Promise<unknown>;
70
+ mode(scope: Scope, mode: ToolMode): Promise<void>;
71
+ project(operation: string, parameters: Record<string, unknown>): Promise<Record<string, unknown>>;
72
+ ui(scope: Scope, operation: string, p: Record<string, unknown>): Promise<Record<string, unknown>>;
73
+ archivePayloads(scope: Scope, p: Record<string, unknown>): Promise<Record<string, unknown>>;
74
+ debuggerStart(scope: Scope): Promise<void>;
75
+ debuggerStop(scope: Scope): Promise<void>;
76
+ private debuggerHelper;
77
+ private debuggerHelperRecord;
78
+ debuggerCall(scope: Scope, operation: string, p?: Record<string, unknown>): Promise<unknown>;
79
+ private traceHelper;
80
+ debuggerSaved(scope: Scope): Promise<DebuggerState>;
81
+ debuggerSelect(scope: Scope, trace: string): Promise<void>;
82
+ debuggerLaunch(scope: Scope, p: Record<string, unknown>, request: string): Promise<unknown>;
83
+ projectOutcome(requestId: string, expected: Record<string, unknown>): Promise<Record<string, unknown> | undefined>;
84
+ private debuggerMetadataChanges;
85
+ close(scope: Scope): Promise<void>;
86
+ closed(scope: Scope): Promise<boolean>;
87
+ latest(targetId: string): Promise<{
88
+ revision: number;
89
+ snapshot: Artifact;
90
+ }>;
91
+ fields(snapshot: Artifact, changes: Pick<ScalarChange, 'address' | 'field'>[]): Promise<Record<string, {
92
+ value: string | null;
93
+ dependency: string;
94
+ exists: boolean;
95
+ }>>;
96
+ private applyField;
97
+ candidate(targetId: string, snapshot: Artifact, changes: ScalarChange[]): Promise<Artifact>;
98
+ publish(publication: Publication): Promise<{
99
+ state: 'published';
100
+ revision: number;
101
+ } | {
102
+ state: 'conflict';
103
+ applied: 0;
104
+ }>;
105
+ recover(publication: Publication): Promise<{
106
+ state: 'verified';
107
+ revision: number;
108
+ } | {
109
+ state: 'unknown';
110
+ }>;
111
+ recoverModel(targetId: string): Promise<boolean>;
112
+ dispose(): Promise<void>;
113
+ private inventory;
114
+ }
115
+ export {};