neuron-inspector 0.7.0 → 0.8.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 (99) hide show
  1. package/dist/compound-tools.js +2 -136
  2. package/dist/compound-tools.js.map +1 -1
  3. package/dist/monitor.js +208 -7
  4. package/dist/monitor.js.map +1 -1
  5. package/dist/recipe-tools.js +6 -39
  6. package/dist/recipe-tools.js.map +1 -1
  7. package/dist/recipes.d.ts +0 -4
  8. package/dist/recipes.js +3 -49
  9. package/dist/recipes.js.map +1 -1
  10. package/dist/server.js +53 -166
  11. package/dist/server.js.map +1 -1
  12. package/dist/tools.js +0 -26
  13. package/dist/tools.js.map +1 -1
  14. package/package.json +3 -4
  15. package/recipes/linkedin-outreach/learnings.md +1 -17
  16. package/recipes/planner/agent.md +1 -66
  17. package/recipes/planner/learnings.md +1 -49
  18. package/recipes/social-ops/learnings.md +13 -33
  19. package/dist/__tests__/monitor.test.d.ts +0 -1
  20. package/dist/__tests__/monitor.test.js +0 -286
  21. package/dist/__tests__/monitor.test.js.map +0 -1
  22. package/dist/__tests__/recipes.test.d.ts +0 -1
  23. package/dist/__tests__/recipes.test.js +0 -415
  24. package/dist/__tests__/recipes.test.js.map +0 -1
  25. package/dist/__tests__/scheduler.test.d.ts +0 -1
  26. package/dist/__tests__/scheduler.test.js +0 -316
  27. package/dist/__tests__/scheduler.test.js.map +0 -1
  28. package/dist/__tests__/session-state.test.d.ts +0 -1
  29. package/dist/__tests__/session-state.test.js +0 -335
  30. package/dist/__tests__/session-state.test.js.map +0 -1
  31. package/dist/collections/__tests__/assertions.test.d.ts +0 -1
  32. package/dist/collections/__tests__/assertions.test.js +0 -203
  33. package/dist/collections/__tests__/assertions.test.js.map +0 -1
  34. package/dist/collections/__tests__/dynamic-vars.test.d.ts +0 -1
  35. package/dist/collections/__tests__/dynamic-vars.test.js +0 -169
  36. package/dist/collections/__tests__/dynamic-vars.test.js.map +0 -1
  37. package/dist/collections/__tests__/execution.test.d.ts +0 -1
  38. package/dist/collections/__tests__/execution.test.js +0 -271
  39. package/dist/collections/__tests__/execution.test.js.map +0 -1
  40. package/dist/collections/__tests__/integration.test.d.ts +0 -1
  41. package/dist/collections/__tests__/integration.test.js +0 -478
  42. package/dist/collections/__tests__/integration.test.js.map +0 -1
  43. package/dist/collections/__tests__/resolver.test.d.ts +0 -1
  44. package/dist/collections/__tests__/resolver.test.js +0 -282
  45. package/dist/collections/__tests__/resolver.test.js.map +0 -1
  46. package/dist/collections/__tests__/scenario.test.d.ts +0 -1
  47. package/dist/collections/__tests__/scenario.test.js +0 -367
  48. package/dist/collections/__tests__/scenario.test.js.map +0 -1
  49. package/dist/collections/__tests__/scripts.test.d.ts +0 -1
  50. package/dist/collections/__tests__/scripts.test.js +0 -245
  51. package/dist/collections/__tests__/scripts.test.js.map +0 -1
  52. package/dist/collections/__tests__/store.test.d.ts +0 -1
  53. package/dist/collections/__tests__/store.test.js +0 -313
  54. package/dist/collections/__tests__/store.test.js.map +0 -1
  55. package/dist/collections/assertions.d.ts +0 -16
  56. package/dist/collections/assertions.js +0 -107
  57. package/dist/collections/assertions.js.map +0 -1
  58. package/dist/collections/dynamic-vars.d.ts +0 -75
  59. package/dist/collections/dynamic-vars.js +0 -187
  60. package/dist/collections/dynamic-vars.js.map +0 -1
  61. package/dist/collections/executor.d.ts +0 -100
  62. package/dist/collections/executor.js +0 -301
  63. package/dist/collections/executor.js.map +0 -1
  64. package/dist/collections/http.d.ts +0 -9
  65. package/dist/collections/http.js +0 -194
  66. package/dist/collections/http.js.map +0 -1
  67. package/dist/collections/index.d.ts +0 -12
  68. package/dist/collections/index.js +0 -27
  69. package/dist/collections/index.js.map +0 -1
  70. package/dist/collections/postman.d.ts +0 -10
  71. package/dist/collections/postman.js +0 -288
  72. package/dist/collections/postman.js.map +0 -1
  73. package/dist/collections/resolver.d.ts +0 -74
  74. package/dist/collections/resolver.js +0 -330
  75. package/dist/collections/resolver.js.map +0 -1
  76. package/dist/collections/scripts.d.ts +0 -20
  77. package/dist/collections/scripts.js +0 -225
  78. package/dist/collections/scripts.js.map +0 -1
  79. package/dist/collections/store.d.ts +0 -68
  80. package/dist/collections/store.js +0 -507
  81. package/dist/collections/store.js.map +0 -1
  82. package/dist/collections/tools.d.ts +0 -8
  83. package/dist/collections/tools.js +0 -1276
  84. package/dist/collections/tools.js.map +0 -1
  85. package/dist/collections/types.d.ts +0 -226
  86. package/dist/collections/types.js +0 -3
  87. package/dist/collections/types.js.map +0 -1
  88. package/dist/killswitch.d.ts +0 -8
  89. package/dist/killswitch.js +0 -304
  90. package/dist/killswitch.js.map +0 -1
  91. package/dist/resilience.d.ts +0 -112
  92. package/dist/resilience.js +0 -319
  93. package/dist/resilience.js.map +0 -1
  94. package/recipes/autopilot/agent.md +0 -316
  95. package/recipes/autopilot/learnings.md +0 -33
  96. package/recipes/autopilot/recipe.yaml +0 -96
  97. package/recipes/inbox-responder/agent.md +0 -268
  98. package/recipes/inbox-responder/learnings.md +0 -25
  99. package/recipes/inbox-responder/recipe.yaml +0 -82
@@ -1,288 +0,0 @@
1
- /**
2
- * Postman Collection v2.1 ↔ Neuron Collection converter.
3
- *
4
- * Two pure functions — no dependencies beyond the Collection types.
5
- */
6
- // ── Postman → Neuron ──────────────────────────────────────────────
7
- /** Parse a Postman v2.1 JSON object into a Neuron Collection. */
8
- export function fromPostmanV21(json) {
9
- const root = json;
10
- const info = root.info;
11
- const name = info?.name ?? "Imported Collection";
12
- const collection = {
13
- name,
14
- version: "1.0.0",
15
- folders: {},
16
- };
17
- // Collection-level variables → defaults.variables
18
- const variables = root.variable;
19
- if (variables?.length) {
20
- collection.defaults = {
21
- variables: Object.fromEntries(variables.map((v) => [v.key, v.value ?? ""])),
22
- };
23
- }
24
- // Collection-level auth
25
- const auth = parsePostmanAuth(root.auth);
26
- if (auth) {
27
- if (!collection.defaults)
28
- collection.defaults = {};
29
- collection.defaults.auth = auth;
30
- }
31
- // Process items recursively
32
- const items = root.item;
33
- if (items) {
34
- processItems(items, collection, "");
35
- }
36
- return collection;
37
- }
38
- function processItems(items, collection, parentFolder) {
39
- for (const raw of items) {
40
- const item = raw;
41
- const subItems = item.item;
42
- if (subItems && Array.isArray(subItems)) {
43
- // Folder — has nested items
44
- const folderName = slugifyKey(item.name ?? "folder");
45
- processItems(subItems, collection, folderName);
46
- }
47
- else if (item.request) {
48
- // Leaf item — endpoint
49
- const folderKey = parentFolder || "default";
50
- if (!collection.folders)
51
- collection.folders = {};
52
- if (!collection.folders[folderKey]) {
53
- collection.folders[folderKey] = { endpoints: [] };
54
- }
55
- const endpoint = parsePostmanRequest(item);
56
- collection.folders[folderKey].endpoints.push(endpoint);
57
- }
58
- }
59
- }
60
- function parsePostmanRequest(item) {
61
- const req = item.request;
62
- const name = item.name ?? "Unnamed";
63
- // Method
64
- const method = (req.method ?? "GET").toUpperCase();
65
- // URL — can be a string or an object
66
- let path = "/";
67
- const url = req.url;
68
- if (typeof url === "string") {
69
- path = url;
70
- }
71
- else if (url && typeof url === "object") {
72
- const urlObj = url;
73
- if (typeof urlObj.raw === "string") {
74
- path = urlObj.raw;
75
- }
76
- else if (Array.isArray(urlObj.path)) {
77
- path = "/" + urlObj.path.join("/");
78
- }
79
- // Append query parameters
80
- const query = urlObj.query;
81
- if (query?.length) {
82
- const qs = query.map((q) => `${q.key}=${q.value ?? ""}`).join("&");
83
- path += (path.includes("?") ? "&" : "?") + qs;
84
- }
85
- }
86
- // Strip protocol + host to keep only the path portion
87
- try {
88
- const parsed = new URL(path, "https://placeholder.local");
89
- path = parsed.pathname + parsed.search;
90
- }
91
- catch {
92
- // Not a full URL — keep as-is
93
- }
94
- const endpoint = { name, method, path };
95
- // Headers
96
- const headers = req.header;
97
- if (headers?.length) {
98
- endpoint.headers = Object.fromEntries(headers.map((h) => [h.key, h.value ?? ""]));
99
- }
100
- // Body
101
- const body = req.body;
102
- if (body?.raw && typeof body.raw === "string") {
103
- try {
104
- endpoint.body = JSON.parse(body.raw);
105
- }
106
- catch {
107
- endpoint.body = body.raw;
108
- }
109
- }
110
- // Auth
111
- const auth = parsePostmanAuth(req.auth);
112
- if (auth)
113
- endpoint.auth = auth;
114
- // Description
115
- const desc = req.description;
116
- if (typeof desc === "string" && desc) {
117
- endpoint.description = desc;
118
- }
119
- else if (desc && typeof desc === "object") {
120
- const descObj = desc;
121
- if (typeof descObj.content === "string")
122
- endpoint.description = descObj.content;
123
- }
124
- // Tests — best-effort extraction from Postman test scripts
125
- const events = item.event;
126
- if (events) {
127
- const tests = extractTestsFromEvents(events);
128
- if (tests.length)
129
- endpoint.tests = tests;
130
- }
131
- return endpoint;
132
- }
133
- function parsePostmanAuth(auth) {
134
- if (!auth?.type)
135
- return undefined;
136
- const type = auth.type;
137
- if (type === "bearer") {
138
- const bearerArr = auth.bearer;
139
- const token = bearerArr?.find((b) => b.key === "token")?.value ?? "";
140
- return { type: "bearer", token };
141
- }
142
- if (type === "basic") {
143
- const basicArr = auth.basic;
144
- const username = basicArr?.find((b) => b.key === "username")?.value ?? "";
145
- const password = basicArr?.find((b) => b.key === "password")?.value ?? "";
146
- return { type: "basic", username, password };
147
- }
148
- if (type === "apikey") {
149
- const apiKeyArr = auth.apikey;
150
- const headerName = apiKeyArr?.find((b) => b.key === "key")?.value ?? "X-API-Key";
151
- const value = apiKeyArr?.find((b) => b.key === "value")?.value ?? "";
152
- return { type: "api-key", header: headerName, value };
153
- }
154
- return undefined;
155
- }
156
- /** Best-effort extraction of status checks from Postman test scripts. */
157
- function extractTestsFromEvents(events) {
158
- const assertions = [];
159
- for (const event of events) {
160
- if (event.listen !== "test")
161
- continue;
162
- const lines = event.script?.exec ?? [];
163
- const script = lines.join("\n");
164
- // Match pm.response.to.have.status(N) patterns
165
- const statusMatches = script.matchAll(/pm\.response\.to\.have\.status\((\d+)\)/g);
166
- for (const m of statusMatches) {
167
- assertions.push({ check: "status", expect: Number(m[1]) });
168
- }
169
- // Match pm.expect(pm.response.code).to.eql(N) patterns
170
- const codeMatches = script.matchAll(/pm\.expect\(pm\.response\.code\)\.to\.eql\((\d+)\)/g);
171
- for (const m of codeMatches) {
172
- assertions.push({ check: "status", expect: Number(m[1]) });
173
- }
174
- }
175
- return assertions;
176
- }
177
- // ── Neuron → Postman ──────────────────────────────────────────────
178
- const POSTMAN_SCHEMA = "https://schema.getpostman.com/json/collection/v2.1.0/collection.json";
179
- /** Convert a Neuron Collection to Postman v2.1 JSON. */
180
- export function toPostmanV21(collection, id) {
181
- const postman = {
182
- info: {
183
- name: collection.name,
184
- _postman_id: id,
185
- schema: POSTMAN_SCHEMA,
186
- ...(collection.description && { description: collection.description }),
187
- },
188
- item: [],
189
- };
190
- // Folders → Postman item groups
191
- const items = postman.item;
192
- if (collection.folders) {
193
- for (const [folderName, folder] of Object.entries(collection.folders)) {
194
- const folderItem = {
195
- name: folderName,
196
- item: folder.endpoints.map((ep) => endpointToPostmanItem(ep, folder)),
197
- };
198
- if (folder.description)
199
- folderItem.description = folder.description;
200
- if (folder.auth)
201
- folderItem.auth = authToPostman(folder.auth);
202
- items.push(folderItem);
203
- }
204
- }
205
- // Collection-level variables
206
- if (collection.defaults?.variables) {
207
- postman.variable = Object.entries(collection.defaults.variables).map(([key, value]) => ({
208
- key,
209
- value,
210
- type: "string",
211
- }));
212
- }
213
- // Collection-level auth
214
- if (collection.defaults?.auth) {
215
- postman.auth = authToPostman(collection.defaults.auth);
216
- }
217
- return postman;
218
- }
219
- function endpointToPostmanItem(ep, folder) {
220
- const item = {
221
- name: ep.name,
222
- request: {
223
- method: ep.method.toUpperCase(),
224
- header: ep.headers
225
- ? Object.entries(ep.headers).map(([key, value]) => ({ key, value, type: "text" }))
226
- : [],
227
- url: {
228
- raw: ep.path,
229
- path: ep.path.split("?")[0].split("/").filter(Boolean),
230
- },
231
- },
232
- };
233
- const req = item.request;
234
- // Body
235
- if (ep.body !== undefined) {
236
- req.body = {
237
- mode: "raw",
238
- raw: typeof ep.body === "string" ? ep.body : JSON.stringify(ep.body, null, 2),
239
- options: { raw: { language: "json" } },
240
- };
241
- }
242
- // Auth
243
- if (ep.auth) {
244
- req.auth = authToPostman(ep.auth);
245
- }
246
- // Description
247
- if (ep.description) {
248
- req.description = ep.description;
249
- }
250
- return item;
251
- }
252
- function authToPostman(auth) {
253
- switch (auth.type) {
254
- case "bearer":
255
- return {
256
- type: "bearer",
257
- bearer: [{ key: "token", value: auth.token ?? "", type: "string" }],
258
- };
259
- case "basic":
260
- return {
261
- type: "basic",
262
- basic: [
263
- { key: "username", value: auth.username ?? "", type: "string" },
264
- { key: "password", value: auth.password ?? "", type: "string" },
265
- ],
266
- };
267
- case "api-key":
268
- return {
269
- type: "apikey",
270
- apikey: [
271
- { key: "key", value: auth.header ?? "X-API-Key", type: "string" },
272
- { key: "value", value: auth.value ?? "", type: "string" },
273
- ],
274
- };
275
- case "none":
276
- return { type: "noauth" };
277
- default:
278
- return { type: "noauth" };
279
- }
280
- }
281
- // ── Util ──────────────────────────────────────────────────────────
282
- function slugifyKey(input) {
283
- return input
284
- .toLowerCase()
285
- .replace(/[^a-z0-9]+/g, "-")
286
- .replace(/^-+|-+$/g, "");
287
- }
288
- //# sourceMappingURL=postman.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"postman.js","sourceRoot":"","sources":["../../src/collections/postman.ts"],"names":[],"mappings":"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"}
@@ -1,74 +0,0 @@
1
- import type { ResolverStep, ResolverContext, ResolvedRequest, Collection, Environment, Folder, Endpoint } from "./types.js";
2
- import type { DynamicVarRegistry } from "./dynamic-vars.js";
3
- /** Replace all {{var}} references in a string using the resolver pipeline. */
4
- export declare function resolveTemplate(template: string, steps: ResolverStep[], context: ResolverContext): string;
5
- /** Recursively resolve all string values in an object/array. */
6
- export declare function resolveDeep(value: unknown, steps: ResolverStep[], context: ResolverContext): unknown;
7
- /** Find all unresolved {{var}} references in a string. */
8
- export declare function findUnresolved(text: string): string[];
9
- /** Scan all strings in a resolved request for unresolved variables. */
10
- export declare function checkUnresolved(request: {
11
- url: string;
12
- headers: Record<string, string>;
13
- body?: string;
14
- }): string[];
15
- /** Level 1: Global variables from ~/.neuron/profile.yaml */
16
- export declare class ProfileResolver implements ResolverStep {
17
- name: string;
18
- private cache;
19
- resolve(key: string, _context: ResolverContext): string | undefined;
20
- }
21
- /** Level 2: Process environment variables */
22
- export declare class ProcessEnvResolver implements ResolverStep {
23
- name: string;
24
- resolve(key: string, _context: ResolverContext): string | undefined;
25
- }
26
- /** Level 3: Active environment variables */
27
- export declare class EnvironmentResolver implements ResolverStep {
28
- name: string;
29
- resolve(key: string, context: ResolverContext): string | undefined;
30
- }
31
- /** Level 4: Collection-level defaults.variables */
32
- export declare class CollectionDefaultsResolver implements ResolverStep {
33
- name: string;
34
- resolve(key: string, context: ResolverContext): string | undefined;
35
- }
36
- /** Level 5: Folder-level variables */
37
- export declare class FolderResolver implements ResolverStep {
38
- name: string;
39
- resolve(key: string, context: ResolverContext): string | undefined;
40
- }
41
- /** Level 6: Request-level variables */
42
- export declare class RequestResolver implements ResolverStep {
43
- name: string;
44
- resolve(key: string, context: ResolverContext): string | undefined;
45
- }
46
- /** Level 7: Extracted variables from previous requests */
47
- export declare class ExtractedResolver implements ResolverStep {
48
- name: string;
49
- resolve(key: string, context: ResolverContext): string | undefined;
50
- }
51
- /** Level 8: Script-set variables */
52
- export declare class ScriptVarResolver implements ResolverStep {
53
- name: string;
54
- resolve(key: string, context: ResolverContext): string | undefined;
55
- }
56
- /** Dynamic variable resolver: intercepts $-prefixed references and delegates to the registry. */
57
- export declare class DynamicVarResolverStep implements ResolverStep {
58
- private registry;
59
- name: string;
60
- constructor(registry: DynamicVarRegistry);
61
- resolve(key: string, context: ResolverContext): string | undefined;
62
- }
63
- /** Build the default resolver pipeline (levels 1-8 + dynamic vars). */
64
- export declare function buildDefaultPipeline(dynamicVarRegistry?: DynamicVarRegistry): ResolverStep[];
65
- /** Build a fully resolved request from collection context. */
66
- export declare function buildResolvedRequest(opts: {
67
- collection: Collection;
68
- environment: Environment;
69
- folder: Folder;
70
- endpoint: Endpoint;
71
- pipeline: ResolverStep[];
72
- extracted?: Record<string, string>;
73
- scriptVars?: Record<string, string>;
74
- }): ResolvedRequest;