@bluelibs/runner-dev 4.0.0 → 4.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 (139) hide show
  1. package/AI.md +72 -2
  2. package/README.md +132 -11
  3. package/dist/cli/overview.d.ts +3 -0
  4. package/dist/cli/overview.js +260 -0
  5. package/dist/cli/overview.js.map +1 -0
  6. package/dist/cli/ping.d.ts +3 -0
  7. package/dist/cli/ping.js +62 -0
  8. package/dist/cli/ping.js.map +1 -0
  9. package/dist/cli/query.d.ts +3 -0
  10. package/dist/cli/query.js +84 -0
  11. package/dist/cli/query.js.map +1 -0
  12. package/dist/cli/schema.d.ts +3 -0
  13. package/dist/cli/schema.js +71 -0
  14. package/dist/cli/schema.js.map +1 -0
  15. package/dist/cli/shared.d.ts +18 -0
  16. package/dist/cli/shared.js +158 -0
  17. package/dist/cli/shared.js.map +1 -0
  18. package/dist/cli.js +27 -24
  19. package/dist/cli.js.map +1 -1
  20. package/dist/components/Documentation/Documentation.d.ts +2 -2
  21. package/dist/components/Documentation/Documentation.js.map +1 -1
  22. package/dist/components/Documentation/components/DiagnosticsPanel.d.ts +2 -2
  23. package/dist/components/Documentation/components/DiagnosticsPanel.js +163 -100
  24. package/dist/components/Documentation/components/DiagnosticsPanel.js.map +1 -1
  25. package/dist/components/Documentation/components/EventCard.d.ts +3 -3
  26. package/dist/components/Documentation/components/EventCard.js +248 -122
  27. package/dist/components/Documentation/components/EventCard.js.map +1 -1
  28. package/dist/components/Documentation/components/HookCard.d.ts +3 -3
  29. package/dist/components/Documentation/components/HookCard.js +257 -86
  30. package/dist/components/Documentation/components/HookCard.js.map +1 -1
  31. package/dist/components/Documentation/components/MiddlewareCard.d.ts +3 -3
  32. package/dist/components/Documentation/components/MiddlewareCard.js +286 -131
  33. package/dist/components/Documentation/components/MiddlewareCard.js.map +1 -1
  34. package/dist/components/Documentation/components/ResourceCard.d.ts +3 -3
  35. package/dist/components/Documentation/components/ResourceCard.js +202 -68
  36. package/dist/components/Documentation/components/ResourceCard.js.map +1 -1
  37. package/dist/components/Documentation/components/Sidebar.d.ts +3 -3
  38. package/dist/components/Documentation/components/Sidebar.js +137 -101
  39. package/dist/components/Documentation/components/Sidebar.js.map +1 -1
  40. package/dist/components/Documentation/components/TagCard.d.ts +1 -1
  41. package/dist/components/Documentation/components/TaskCard.d.ts +3 -3
  42. package/dist/components/Documentation/components/TaskCard.js +176 -57
  43. package/dist/components/Documentation/components/TaskCard.js.map +1 -1
  44. package/dist/components/ExampleComponent.d.ts +2 -2
  45. package/dist/components/ExampleComponent.js +72 -31
  46. package/dist/components/ExampleComponent.js.map +1 -1
  47. package/dist/generated/resolvers-types.d.ts +52 -35
  48. package/dist/index.d.ts +7 -6
  49. package/dist/mcp/projectOverview.js +1 -1
  50. package/dist/project-writer/AIModel.d.ts +29 -0
  51. package/dist/project-writer/AIModel.js +48 -0
  52. package/dist/project-writer/AIModel.js.map +1 -0
  53. package/dist/resources/dev.resource.js +6 -0
  54. package/dist/resources/dev.resource.js.map +1 -1
  55. package/dist/resources/docs.generator.resource.d.ts +1 -1
  56. package/dist/resources/docs.generator.resource.js +1 -1
  57. package/dist/resources/docs.generator.resource.js.map +1 -1
  58. package/dist/resources/docs.route.d.ts +23 -0
  59. package/dist/resources/docs.route.js +73 -0
  60. package/dist/resources/docs.route.js.map +1 -0
  61. package/dist/resources/getFileContents.task.d.ts +17 -0
  62. package/dist/resources/getFileContents.task.js +44 -0
  63. package/dist/resources/getFileContents.task.js.map +1 -0
  64. package/dist/resources/graphql.query.task.d.ts +41 -0
  65. package/dist/resources/graphql.query.task.js +53 -0
  66. package/dist/resources/graphql.query.task.js.map +1 -0
  67. package/dist/resources/http.tag.d.ts +5 -0
  68. package/dist/resources/http.tag.js +8 -0
  69. package/dist/resources/http.tag.js.map +1 -0
  70. package/dist/resources/introspector.resource.d.ts +1 -126
  71. package/dist/resources/introspector.resource.js +5 -253
  72. package/dist/resources/introspector.resource.js.map +1 -1
  73. package/dist/resources/introspector.tools.d.ts +1 -1
  74. package/dist/resources/models/Introspector.d.ts +177 -0
  75. package/dist/resources/models/Introspector.js +361 -0
  76. package/dist/resources/models/Introspector.js.map +1 -0
  77. package/dist/resources/models/initializeFromStore.d.ts +3 -0
  78. package/dist/resources/models/initializeFromStore.js +86 -0
  79. package/dist/resources/models/initializeFromStore.js.map +1 -0
  80. package/dist/resources/models/initializeFromStore.utils.d.ts +31 -0
  81. package/dist/resources/models/initializeFromStore.utils.js +322 -0
  82. package/dist/resources/models/initializeFromStore.utils.js.map +1 -0
  83. package/dist/resources/models/introspector.tools.d.ts +26 -0
  84. package/dist/resources/models/introspector.tools.js +195 -0
  85. package/dist/resources/models/introspector.tools.js.map +1 -0
  86. package/dist/resources/routeHandlers/createDocsServeHandler.d.ts +3 -0
  87. package/dist/resources/routeHandlers/createDocsServeHandler.js +50 -0
  88. package/dist/resources/routeHandlers/createDocsServeHandler.js.map +1 -0
  89. package/dist/resources/routeHandlers/getDocsData.d.ts +13 -0
  90. package/dist/resources/routeHandlers/getDocsData.js +23 -0
  91. package/dist/resources/routeHandlers/getDocsData.js.map +1 -0
  92. package/dist/resources/routeHandlers/registerHttpRoutes.hook.d.ts +37 -0
  93. package/dist/resources/routeHandlers/registerHttpRoutes.hook.js +44 -0
  94. package/dist/resources/routeHandlers/registerHttpRoutes.hook.js.map +1 -0
  95. package/dist/resources/server.resource.d.ts +4 -3
  96. package/dist/resources/server.resource.js +46 -34
  97. package/dist/resources/server.resource.js.map +1 -1
  98. package/dist/resources/swap.resource.d.ts +10 -3
  99. package/dist/resources/swap.resource.js +24 -0
  100. package/dist/resources/swap.resource.js.map +1 -1
  101. package/dist/resources/ui.static.d.ts +1 -0
  102. package/dist/resources/ui.static.js +44 -0
  103. package/dist/resources/ui.static.js.map +1 -0
  104. package/dist/schema/context.d.ts +3 -3
  105. package/dist/schema/index.d.ts +2 -2
  106. package/dist/schema/index.js.map +1 -1
  107. package/dist/schema/model.d.ts +11 -4
  108. package/dist/schema/model.js.map +1 -1
  109. package/dist/schema/mutation.js +22 -0
  110. package/dist/schema/mutation.js.map +1 -1
  111. package/dist/schema/query.js +2 -25
  112. package/dist/schema/query.js.map +1 -1
  113. package/dist/schema/types/AllType.js +11 -2
  114. package/dist/schema/types/AllType.js.map +1 -1
  115. package/dist/schema/types/BaseElementCommon.d.ts +1 -1
  116. package/dist/schema/types/BaseElementCommon.js +21 -3
  117. package/dist/schema/types/BaseElementCommon.js.map +1 -1
  118. package/dist/schema/types/HookType.js +10 -3
  119. package/dist/schema/types/HookType.js.map +1 -1
  120. package/dist/schema/types/SwapType.d.ts +1 -0
  121. package/dist/schema/types/SwapType.js +10 -1
  122. package/dist/schema/types/SwapType.js.map +1 -1
  123. package/dist/schema/types/TagType.d.ts +5 -2
  124. package/dist/schema/types/TagType.js +23 -1
  125. package/dist/schema/types/TagType.js.map +1 -1
  126. package/dist/ui/.vite/manifest.json +11 -0
  127. package/dist/ui/assets/docs-DVEzFAJo.css +1 -0
  128. package/dist/ui/assets/docs-l9XdmrRL.js +174 -0
  129. package/dist/ui-test/assets/app.js +1 -0
  130. package/dist/ui-test/index.html +1 -0
  131. package/dist/utils/path.d.ts +7 -0
  132. package/dist/utils/path.js +43 -0
  133. package/dist/utils/path.js.map +1 -1
  134. package/dist/utils/react-ssr.d.ts +3 -1
  135. package/dist/utils/react-ssr.js +11 -6
  136. package/dist/utils/react-ssr.js.map +1 -1
  137. package/package.json +24 -5
  138. package/dist/ui/index.html +0 -20
  139. package/dist/ui/static/index-D-NS5aw1.js +0 -40
package/AI.md CHANGED
@@ -38,6 +38,9 @@ query Architecture {
38
38
  title
39
39
  description
40
40
  }
41
+ tags {
42
+ id
43
+ }
41
44
  dependsOn
42
45
  emits
43
46
  }
@@ -47,6 +50,9 @@ query Architecture {
47
50
  title
48
51
  description
49
52
  }
53
+ tags {
54
+ id
55
+ }
50
56
  dependsOn
51
57
  registers
52
58
  overrides
@@ -54,6 +60,9 @@ query Architecture {
54
60
  }
55
61
  events {
56
62
  id
63
+ tags {
64
+ id
65
+ }
57
66
  emittedBy
58
67
  listenedToBy
59
68
  }
@@ -63,6 +72,9 @@ query Architecture {
63
72
  title
64
73
  description
65
74
  }
75
+ tags {
76
+ id
77
+ }
66
78
  usedByTasks
67
79
  }
68
80
  hooks {
@@ -71,6 +83,9 @@ query Architecture {
71
83
  title
72
84
  description
73
85
  }
86
+ tags {
87
+ id
88
+ }
74
89
  event
75
90
  }
76
91
  }
@@ -222,8 +237,8 @@ mutation EvalCode($code: String!, $inputJson: String, $evalInput: Boolean) {
222
237
 
223
238
  ### GraphQL Operations
224
239
 
225
- - `graphql_query` - Execute read-only GraphQL queries
226
- - `graphql_mutation` - Execute GraphQL mutations (if ALLOW_MUTATIONS=true)
240
+ - `graphql.query` - Execute read-only GraphQL queries
241
+ - `graphql.mutation` - Execute GraphQL mutations (if ALLOW_MUTATIONS=true)
227
242
  - `graphql.introspect` - Get full schema introspection
228
243
  - `graphql.schemaSdl` - Get schema as SDL string
229
244
  - `graphql.ping` - Test connectivity
@@ -267,6 +282,61 @@ help.runner_dev({
267
282
  help.read({ headingIncludes: ["installation", "setup", "configuration"] });
268
283
  ```
269
284
 
285
+ ## Direct CLI Usage
286
+
287
+ Beyond MCP, Runner-Dev offers a powerful standalone CLI for direct interaction from your terminal. This is ideal for scripting, quick checks, or when not operating within an MCP-enabled AI assistant.
288
+
289
+ ### Prerequisites
290
+
291
+ - Your app must be running with the Dev server enabled.
292
+ - The `@bluelibs/runner-dev` package should be installed.
293
+
294
+ ### Common Commands
295
+
296
+ All commands can be prefixed with environment variables like `ENDPOINT` and `HEADERS`.
297
+
298
+ **Ping the server:**
299
+ ```bash
300
+ ENDPOINT=http://localhost:1337/graphql npx @bluelibs/runner-dev ping
301
+ ```
302
+
303
+ **Execute a GraphQL query:**
304
+ ```bash
305
+ # Simple query
306
+ ENDPOINT=http://localhost:1337/graphql npx @bluelibs/runner-dev query 'query { tasks { id } }'
307
+
308
+ # Query with variables and pretty formatting
309
+ ENDPOINT=http://localhost:1337/graphql \
310
+ npx @bluelibs/runner-dev query \
311
+ 'query Q($ns: ID){ tasks(idIncludes: $ns) { id } }' \
312
+ --variables '{"ns":"task."}' \
313
+ --format pretty
314
+ ```
315
+
316
+ **Generate a project overview:**
317
+ ```bash
318
+ ENDPOINT=http://localhost:1337/graphql npx @bluelibs/runner-dev overview --details 10
319
+ ```
320
+
321
+ **Fetch GraphQL schema:**
322
+ ```bash
323
+ # As SDL
324
+ ENDPOINT=http://localhost:1337/graphql npx @bluelibs/runner-dev schema sdl
325
+
326
+ # As JSON
327
+ ENDPOINT=http://localhost:1337/graphql npx @bluelibs/runner-dev schema json
328
+ ```
329
+
330
+ ### Key Flags
331
+
332
+ - `--endpoint <url>`: GraphQL endpoint URL.
333
+ - `--headers '<json>'`: JSON for extra headers.
334
+ - `--variables '<json>'`: JSON variables for a query.
335
+ - `--format data|json|pretty`: Output format.
336
+ - `--namespace <str>`: A filter to inject `idIncludes` on top-level fields.
337
+
338
+ This direct CLI access provides a powerful way for AI assistants with shell access to script complex interactions, perform detailed introspection, and validate application state without relying on MCP tools.
339
+
270
340
  ## Common Use Cases
271
341
 
272
342
  ### 1. Understanding System Architecture
package/README.md CHANGED
@@ -104,6 +104,119 @@ Available tools once connected:
104
104
  - `graphql.ping` — reachability check
105
105
  - `project.overview` — dynamic Markdown overview aggregated from the API
106
106
 
107
+ ### CLI usage (direct)
108
+
109
+ This package also ships a CLI that can query the same GraphQL API or generate an overview directly from your terminal.
110
+
111
+ Prerequisites:
112
+
113
+ - Ensure your app registers the Dev GraphQL server (`dev.with({ port: 1337 })`) or otherwise expose a compatible endpoint.
114
+ - Build this package (or install it) so the binary is available.
115
+
116
+ Help:
117
+
118
+ ```bash
119
+ npx @bluelibs/runner-dev --help
120
+ ```
121
+
122
+ Ping endpoint:
123
+
124
+ ```bash
125
+ ENDPOINT=http://localhost:1337/graphql npx @bluelibs/runner-dev ping
126
+ ```
127
+
128
+ Run a query:
129
+
130
+ ```bash
131
+ ENDPOINT=http://localhost:1337/graphql npx @bluelibs/runner-dev query 'query { tasks { id } }'
132
+
133
+ # With variables and pretty output
134
+ ENDPOINT=http://localhost:1337/graphql \
135
+ npx @bluelibs/runner-dev query \
136
+ 'query Q($ns: ID){ tasks(idIncludes: $ns) { id } }' \
137
+ --variables '{"ns":"task."}' \
138
+ --format pretty
139
+
140
+ # Add a namespace sugar to inject idIncludes/filter automatically
141
+ ENDPOINT=http://localhost:1337/graphql npx @bluelibs/runner-dev query 'query { tasks { id } }' --namespace task.
142
+ ```
143
+
144
+ Project overview (Markdown):
145
+
146
+ ```bash
147
+ ENDPOINT=http://localhost:1337/graphql npx @bluelibs/runner-dev overview --details 10 --include-live
148
+ ```
149
+
150
+ Schema tools:
151
+
152
+ ```bash
153
+ # SDL string
154
+ ENDPOINT=http://localhost:1337/graphql npx @bluelibs/runner-dev schema sdl
155
+
156
+ # Introspection JSON
157
+ ENDPOINT=http://localhost:1337/graphql npx @bluelibs/runner-dev schema json
158
+ ```
159
+
160
+ Environment variables used by all commands:
161
+
162
+ - `ENDPOINT` (or `GRAPHQL_ENDPOINT`): GraphQL endpoint URL
163
+ - `HEADERS`: JSON for extra headers, e.g. `{"Authorization":"Bearer ..."}`
164
+
165
+ Flags:
166
+
167
+ - `--endpoint <url>`: override endpoint
168
+ - `--headers '<json>'`: override headers
169
+ - `--variables '<json>'`: JSON variables for query
170
+ - `--operation <name>`: operation name for documents with multiple operations
171
+ - `--format data|json|pretty`: output mode (default `data`)
172
+ - `--raw`: print full GraphQL envelope including errors
173
+ - `--namespace <str>`: convenience filter that injects `idIncludes` or `events(filter: { idIncludes })` at the top-level fields when possible
174
+
175
+ ### Local dev playbook
176
+
177
+ Quickly boot the dummy server and UI, then exercise the CLI against it.
178
+
179
+ 1. Start dev play (UI + Server):
180
+
181
+ ```bash
182
+ npm run play
183
+ ```
184
+
185
+ This starts:
186
+
187
+ - UI watcher (`vite build --watch`)
188
+ - Dummy GraphQL server with Dev resources on port 31337
189
+
190
+ 2. In another terminal, build the CLI and run demo commands:
191
+
192
+ ```bash
193
+ npm run build
194
+ npm run demo:ping
195
+ npm run demo:query
196
+ npm run demo:overview
197
+ ```
198
+
199
+ Alternatively, you can keep a server-only process:
200
+
201
+ ```bash
202
+ npm run play:cli
203
+ # Then:
204
+ npm run demo:query
205
+ ```
206
+
207
+ ### Testing
208
+
209
+ - Unit/integration tests are executed via Jest: `npm test`.
210
+ - CLI remote tests spin up the dummy app on ephemeral ports and dispose cleanly.
211
+
212
+ Run only the CLI tests:
213
+
214
+ ```bash
215
+ npm test -- src/__tests__/component/cli.query.remote.test.ts src/__tests__/component/cli.overview.remote.test.ts
216
+ ```
217
+
218
+ CI note: we prebuild before tests via `pretest` so the CLI binary `dist/cli.js` is available.
219
+
107
220
  ## Programmatic Introspection (without GraphQL)
108
221
 
109
222
  ```ts
@@ -159,19 +272,21 @@ All arrays are non-null lists with non-null items, and ids are complemented by r
159
272
  - `swappedTasks: [SwappedTask!]!`
160
273
  - `live: Live!`
161
274
  - `diagnostics: [Diagnostic!]!`
275
+ - `tag(id: ID!): TagUsage`
276
+ - `tags: [Tag!]!`
162
277
 
163
278
  - All
164
279
 
165
- - `id`, `meta`, `filePath`, `fileContents`, `markdownDescription`
280
+ - `id`, `meta`, `filePath`, `fileContents`, `markdownDescription`, `tags: [Tag!]!`
166
281
 
167
282
  - Tasks/Hooks
168
283
 
169
- - Shared: `emits: [String!]!`, `emitsResolved: [Event!]!`
284
+ - Shared: `emits: [String!]!`, `emitsResolved: [Event!]!`, `runs: [RunRecord!]!`, `tags: [Tag!]!`
170
285
  - Shared: `dependsOn: [String!]!`
171
286
  - Shared: `middleware: [String!]!`, `middlewareResolved: [TaskMiddleware!]!`, `middlewareResolvedDetailed: [TaskMiddlewareUsage!]!`
172
287
  - Shared: `overriddenBy: String`, `registeredBy: String`, `registeredByResolved: Resource`
173
- - Task-specific: `inputSchema: String`, `inputSchemaReadable: String`, `dependsOnResolved { tasks { id } resources { id } emitters { id } }`
174
- - Hook-specific: `event: String!`, `hookOrder: Int`
288
+ - Task-specific: `inputSchema: String`, `inputSchemaReadable: String`, `dependsOnResolved { tasks { id } hooks { id } resources { id } emitters { id } }`
289
+ - Hook-specific: `event: String!`, `hookOrder: Int`, `inputSchema: String`, `inputSchemaReadable: String`
175
290
 
176
291
  - Resources
177
292
 
@@ -183,13 +298,15 @@ All arrays are non-null lists with non-null items, and ids are complemented by r
183
298
  - `emits: [Event!]!` (inferred from task/hook emissions)
184
299
  - `dependsOn: [String!]!`, `dependsOnResolved: [Resource!]!`
185
300
  - `registeredBy: String`, `registeredByResolved: Resource`
301
+ - `tags: [Tag!]!`
186
302
 
187
303
  - Events
188
304
 
189
- - `emittedBy: [String!]!`, `emittedByResolved: [Hook!]!`
305
+ - `emittedBy: [String!]!`, `emittedByResolved: [BaseElement!]!`
190
306
  - `listenedToBy: [String!]!`, `listenedToByResolved: [Hook!]!`
191
307
  - `payloadSchema: String`, `payloadSchemaReadable: String`
192
308
  - `registeredBy: String`, `registeredByResolved: Resource`
309
+ - `tags: [Tag!]!`
193
310
 
194
311
  - TaskMiddleware
195
312
 
@@ -197,6 +314,8 @@ All arrays are non-null lists with non-null items, and ids are complemented by r
197
314
  - `usedBy: [Task!]!`, `usedByDetailed: [MiddlewareTaskUsage!]!`
198
315
  - `emits: [Event!]!`
199
316
  - `overriddenBy: String`, `registeredBy: String`, `registeredByResolved: Resource`
317
+ - `configSchema: String`, `configSchemaReadable: String`
318
+ - `tags: [Tag!]!`
200
319
 
201
320
  - ResourceMiddleware
202
321
 
@@ -204,6 +323,8 @@ All arrays are non-null lists with non-null items, and ids are complemented by r
204
323
  - `usedBy: [Resource!]!`, `usedByDetailed: [MiddlewareResourceUsage!]!`
205
324
  - `emits: [Event!]!`
206
325
  - `overriddenBy: String`, `registeredBy: String`, `registeredByResolved: Resource`
326
+ - `configSchema: String`, `configSchemaReadable: String`
327
+ - `tags: [Tag!]!`
207
328
 
208
329
  - Live
209
330
 
@@ -211,14 +332,14 @@ All arrays are non-null lists with non-null items, and ids are complemented by r
211
332
  - `LogEntry { timestampMs, level, message, data, correlationId }`
212
333
  - `LogFilterInput { levels: [LogLevelEnum!], messageIncludes: String, correlationIds: [String!] }`
213
334
  - `emissions(afterTimestamp: Float, last: Int, filter: EmissionFilterInput): [EmissionEntry!]!`
214
- - `EmissionEntry { timestampMs, eventId, emitterId, payload, correlationId }`
215
- - `EmissionFilterInput { eventIds: [String!], emitterIds: [String!] }`
335
+ - `EmissionEntry { timestampMs, eventId, emitterId, payload, correlationId, emitterResolved: BaseElement, eventResolved: Event }`
336
+ - `EmissionFilterInput { eventIds: [String!], emitterIds: [String!], correlationIds: [String!] }`
216
337
  - `errors(afterTimestamp: Float, last: Int, filter: ErrorFilterInput): [ErrorEntry!]!`
217
- - `ErrorEntry { timestampMs, sourceId, sourceKind, message, stack, data, correlationId }`
218
- - `ErrorFilterInput { sourceKinds: [SourceKindEnum!], sourceIds: [ID!], messageIncludes: String }`
338
+ - `ErrorEntry { timestampMs, sourceId, sourceKind, message, stack, data, correlationId, sourceResolved: BaseElement }`
339
+ - `ErrorFilterInput { sourceKinds: [SourceKindEnum!], sourceIds: [ID!], messageIncludes: String, correlationIds: [String!] }`
219
340
  - `runs(afterTimestamp: Float, last: Int, filter: RunFilterInput): [RunRecord!]!`
220
- - `RunRecord { timestampMs, nodeId, nodeKind, durationMs, ok, error, parentId, rootId, correlationId }`
221
- - `RunFilterInput { nodeKinds: [NodeKindEnum!], nodeIds: [String!], ok: Boolean, parentIds: [String!], rootIds: [String!] }`
341
+ - `RunRecord { timestampMs, nodeId, nodeKind, durationMs, ok, error, parentId, rootId, correlationId, nodeResolved: BaseElement }`
342
+ - `RunFilterInput { nodeKinds: [NodeKindEnum!], nodeIds: [String!], ok: Boolean, parentIds: [String!], rootIds: [String!], correlationIds: [String!] }`
222
343
 
223
344
  Enums: `LogLevelEnum` = `trace|debug|info|warn|error|fatal|log`, `SourceKindEnum` = `TASK|HOOK|RESOURCE|MIDDLEWARE|INTERNAL`, `NodeKindEnum` = `TASK|HOOK`.
224
345
 
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import "source-map-support/register";
3
+ export declare function main(argv: string[]): Promise<void>;
@@ -0,0 +1,260 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.main = main;
5
+ require("source-map-support/register");
6
+ const shared_1 = require("./shared");
7
+ function printHelp() {
8
+ // eslint-disable-next-line no-console
9
+ console.log(`
10
+ runner-dev overview
11
+
12
+ Usage:
13
+ runner-dev overview [--details 10] [--include-live] [--namespace ns]
14
+
15
+ Options:
16
+ --endpoint <url> GraphQL endpoint (or use ENDPOINT/GRAPHQL_ENDPOINT)
17
+ --headers '<json>' Extra HTTP headers as JSON (or HEADERS env)
18
+ --details <n> Sample size per section (default 10)
19
+ --include-live Include live counters (logs/emissions/errors/runs)
20
+ --namespace <str> Filter nodes by idIncludes (client-side)
21
+ `);
22
+ }
23
+ async function main(argv) {
24
+ const args = argv.slice(3);
25
+ if (args.length === 0 &&
26
+ process.env.ENDPOINT == null &&
27
+ process.env.GRAPHQL_ENDPOINT == null) {
28
+ // Show help if nothing is set
29
+ printHelp();
30
+ return;
31
+ }
32
+ if (args[0] && ["-h", "--help", "help"].includes(args[0])) {
33
+ printHelp();
34
+ return;
35
+ }
36
+ const opts = new Map();
37
+ for (let i = 0; i < args.length; i++) {
38
+ const a = args[i];
39
+ if (a.startsWith("--")) {
40
+ const key = a.slice(2);
41
+ const next = args[i + 1];
42
+ if (!next || next.startsWith("--")) {
43
+ opts.set(key, true);
44
+ }
45
+ else {
46
+ opts.set(key, next);
47
+ i++;
48
+ }
49
+ }
50
+ }
51
+ const endpoint = opts.get("endpoint") || undefined;
52
+ const headersJson = opts.get("headers") || undefined;
53
+ const details = Number(opts.get("details") ?? 10);
54
+ const includeLive = Boolean(opts.get("include-live"));
55
+ const namespace = opts.get("namespace") || undefined;
56
+ const query = `query Overview($liveLast: Int) {
57
+ tasks { id meta { title description } filePath inputSchemaReadable }
58
+ hooks { id meta { title description } events filePath inputSchemaReadable }
59
+ resources { id meta { title description } filePath configSchemaReadable }
60
+ middlewares { id meta { title description } filePath configSchemaReadable }
61
+ events { id meta { title description } filePath payloadSchemaReadable emittedBy listenedToBy }
62
+ diagnostics { severity code message nodeId nodeKind }
63
+ live {
64
+ logs(last: $liveLast) { timestampMs level message correlationId }
65
+ emissions(last: $liveLast) { timestampMs eventId emitterId correlationId }
66
+ errors(last: $liveLast) { timestampMs sourceKind message correlationId }
67
+ runs(last: $liveLast) { timestampMs nodeId nodeKind ok correlationId }
68
+ }
69
+ }`;
70
+ try {
71
+ const endpointResolved = (0, shared_1.resolveEndpoint)(endpoint);
72
+ const _headers = (0, shared_1.resolveHeaders)(headersJson); // validates
73
+ const out = await (0, shared_1.execRemote)({
74
+ endpoint: endpointResolved,
75
+ headersJson,
76
+ query,
77
+ });
78
+ if (out?.errors?.length) {
79
+ // eslint-disable-next-line no-console
80
+ console.error(JSON.stringify(out.errors, null, 2));
81
+ // eslint-disable-next-line no-process-exit
82
+ process.exit(1);
83
+ }
84
+ const data = out?.data ?? {};
85
+ const tasks = (Array.isArray(data.tasks) ? data.tasks : []).filter((x) => !namespace || String(x.id).includes(namespace));
86
+ const hooks = (Array.isArray(data.hooks) ? data.hooks : []).filter((x) => !namespace || String(x.id).includes(namespace));
87
+ const resources = (Array.isArray(data.resources) ? data.resources : []).filter((x) => !namespace || String(x.id).includes(namespace));
88
+ const middlewares = (Array.isArray(data.middlewares) ? data.middlewares : []).filter((x) => !namespace || String(x.id).includes(namespace));
89
+ const events = (Array.isArray(data.events) ? data.events : []).filter((x) => !namespace || String(x.id).includes(namespace));
90
+ const diagnostics = Array.isArray(data.diagnostics) ? data.diagnostics : [];
91
+ const live = data.live ?? {};
92
+ const diagBySeverity = {};
93
+ for (const d of diagnostics) {
94
+ const sev = String(d?.severity ?? "UNKNOWN");
95
+ diagBySeverity[sev] = (diagBySeverity[sev] ?? 0) + 1;
96
+ }
97
+ const lines = [];
98
+ lines.push(`# Runner Dev Project Overview`);
99
+ lines.push("");
100
+ lines.push(`Endpoint: ${endpointResolved}`);
101
+ lines.push("");
102
+ lines.push(`## Topology Summary`);
103
+ lines.push(`- Tasks: ${tasks.length}`);
104
+ lines.push(`- Hooks: ${hooks.length}`);
105
+ lines.push(`- Resources: ${resources.length}`);
106
+ lines.push(`- Middleware: ${middlewares.length}`);
107
+ lines.push(`- Events: ${events.length}`);
108
+ lines.push(`- Diagnostics: ${diagnostics.length}`);
109
+ if (Object.keys(diagBySeverity).length) {
110
+ const sevStr = Object.entries(diagBySeverity)
111
+ .map(([k, v]) => `${k}=${v}`)
112
+ .join(", ");
113
+ lines.push(` - By severity: ${sevStr}`);
114
+ }
115
+ lines.push("");
116
+ lines.push(`## Sample Nodes (first ${details})`);
117
+ function asString(v) {
118
+ return typeof v === "string" && v.trim().length ? v : undefined;
119
+ }
120
+ function safeString(v) {
121
+ if (v == null)
122
+ return undefined;
123
+ if (typeof v === "string")
124
+ return v;
125
+ try {
126
+ return JSON.stringify(v);
127
+ }
128
+ catch {
129
+ return String(v);
130
+ }
131
+ }
132
+ function formatSchemaBlock(title, schemaReadable) {
133
+ if (!schemaReadable || schemaReadable.trim().length === 0)
134
+ return [];
135
+ const out = [];
136
+ out.push(` - ${title}:`);
137
+ out.push(" ```");
138
+ for (const l of schemaReadable.split("\n"))
139
+ out.push(l.length ? ` ${l}` : " ");
140
+ out.push(" ```");
141
+ return out;
142
+ }
143
+ function formatItem(p) {
144
+ const title = asString(p.meta?.title) || p.id;
145
+ const description = asString(p.meta?.description);
146
+ const out = [];
147
+ out.push(`- ${title} {${p.id}}`);
148
+ if (description)
149
+ out.push(` - description: ${description}`);
150
+ if (p.filePath)
151
+ out.push(` - file: ${p.filePath}`);
152
+ if (Array.isArray(p.extra) && p.extra.length)
153
+ out.push(...p.extra);
154
+ if (p.schemaReadable)
155
+ out.push(...formatSchemaBlock(p.schemaLabel || "schema", p.schemaReadable));
156
+ return out.join("\n");
157
+ }
158
+ if (tasks.length) {
159
+ lines.push(`### Tasks`);
160
+ for (const t of tasks.slice(0, details)) {
161
+ lines.push(formatItem({
162
+ id: String(t.id),
163
+ meta: t.meta,
164
+ filePath: safeString(t.filePath),
165
+ schemaReadable: asString(t.inputSchemaReadable),
166
+ schemaLabel: "input schema",
167
+ }));
168
+ }
169
+ lines.push("");
170
+ }
171
+ if (hooks.length) {
172
+ lines.push(`### Hooks`);
173
+ for (const l of hooks.slice(0, details)) {
174
+ const extra = [];
175
+ if (l.event)
176
+ extra.push(` - event: ${String(l.event)}`);
177
+ lines.push(formatItem({
178
+ id: String(l.id),
179
+ meta: l.meta,
180
+ filePath: safeString(l.filePath),
181
+ schemaReadable: asString(l.inputSchemaReadable),
182
+ schemaLabel: "input schema",
183
+ extra,
184
+ }));
185
+ }
186
+ lines.push("");
187
+ }
188
+ if (resources.length) {
189
+ lines.push(`### Resources`);
190
+ for (const r of resources.slice(0, details)) {
191
+ lines.push(formatItem({
192
+ id: String(r.id),
193
+ meta: r.meta,
194
+ filePath: safeString(r.filePath),
195
+ schemaReadable: asString(r.configSchemaReadable),
196
+ schemaLabel: "config schema",
197
+ }));
198
+ }
199
+ lines.push("");
200
+ }
201
+ if (middlewares.length) {
202
+ lines.push(`### Middleware`);
203
+ for (const m of middlewares.slice(0, details)) {
204
+ lines.push(formatItem({
205
+ id: String(m.id),
206
+ meta: m.meta,
207
+ filePath: safeString(m.filePath),
208
+ schemaReadable: asString(m.configSchemaReadable),
209
+ schemaLabel: "config schema",
210
+ }));
211
+ }
212
+ lines.push("");
213
+ }
214
+ if (events.length) {
215
+ lines.push(`### Events`);
216
+ for (const e of events.slice(0, details)) {
217
+ const emittedBy = Array.isArray(e.emittedBy) ? e.emittedBy.length : 0;
218
+ const listenedToBy = Array.isArray(e.listenedToBy)
219
+ ? e.listenedToBy.length
220
+ : 0;
221
+ const extra = [
222
+ ` - relations: emittedBy=${emittedBy}, listenedToBy=${listenedToBy}`,
223
+ ];
224
+ lines.push(formatItem({
225
+ id: String(e.id),
226
+ meta: e.meta,
227
+ filePath: safeString(e.filePath),
228
+ schemaReadable: asString(e.payloadSchemaReadable),
229
+ schemaLabel: "payload schema",
230
+ extra,
231
+ }));
232
+ }
233
+ lines.push("");
234
+ }
235
+ if (includeLive) {
236
+ const logs = Array.isArray(live.logs) ? live.logs : [];
237
+ const emissions = Array.isArray(live.emissions) ? live.emissions : [];
238
+ const errors = Array.isArray(live.errors) ? live.errors : [];
239
+ const runs = Array.isArray(live.runs) ? live.runs : [];
240
+ lines.push(`## Live (last 20)`);
241
+ lines.push(`- Logs: ${logs.length}`);
242
+ lines.push(`- Emissions: ${emissions.length}`);
243
+ lines.push(`- Errors: ${errors.length}`);
244
+ lines.push(`- Runs: ${runs.length}`);
245
+ lines.push("");
246
+ }
247
+ // eslint-disable-next-line no-console
248
+ console.log(lines.join("\n"));
249
+ }
250
+ catch (e) {
251
+ // eslint-disable-next-line no-console
252
+ console.error(e.message);
253
+ // eslint-disable-next-line no-process-exit
254
+ process.exit(1);
255
+ }
256
+ }
257
+ if (require.main === module) {
258
+ void main(process.argv);
259
+ }
260
+ //# sourceMappingURL=overview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overview.js","sourceRoot":"","sources":["../../src/cli/overview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import "source-map-support/register";
3
+ export declare function main(argv: string[]): Promise<void>;
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.main = main;
5
+ require("source-map-support/register");
6
+ const shared_1 = require("./shared");
7
+ function printHelp() {
8
+ // eslint-disable-next-line no-console
9
+ console.log(`
10
+ runner-dev ping
11
+
12
+ Usage:
13
+ runner-dev ping [--endpoint <url>] [--headers '<json>']
14
+ `);
15
+ }
16
+ async function main(argv) {
17
+ const args = argv.slice(3);
18
+ if (args.length && ["-h", "--help", "help"].includes(args[0])) {
19
+ printHelp();
20
+ return;
21
+ }
22
+ const opts = new Map();
23
+ for (let i = 0; i < args.length; i++) {
24
+ const a = args[i];
25
+ if (a.startsWith("--")) {
26
+ const key = a.slice(2);
27
+ const next = args[i + 1];
28
+ if (!next || next.startsWith("--")) {
29
+ opts.set(key, true);
30
+ }
31
+ else {
32
+ opts.set(key, next);
33
+ i++;
34
+ }
35
+ }
36
+ }
37
+ const endpoint = opts.get("endpoint") || undefined;
38
+ const headersJson = opts.get("headers") || undefined;
39
+ try {
40
+ const result = await (0, shared_1.execRemote)({
41
+ endpoint,
42
+ headersJson,
43
+ query: "query { __typename }",
44
+ });
45
+ // eslint-disable-next-line no-console
46
+ console.log(JSON.stringify({
47
+ ok: true,
48
+ endpoint: endpoint ?? process.env.ENDPOINT ?? process.env.GRAPHQL_ENDPOINT,
49
+ result,
50
+ }, null, 2));
51
+ }
52
+ catch (e) {
53
+ // eslint-disable-next-line no-console
54
+ console.error(JSON.stringify({ ok: false, error: e.message }, null, 2));
55
+ // eslint-disable-next-line no-process-exit
56
+ process.exit(1);
57
+ }
58
+ }
59
+ if (require.main === module) {
60
+ void main(process.argv);
61
+ }
62
+ //# sourceMappingURL=ping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ping.js","sourceRoot":"","sources":["../../src/cli/ping.ts"],"names":[],"mappings":";;;AAcA,oBAmDC;AAhED,uCAAqC;AACrC,qCAAsC;AAEtC,SAAS,SAAS;IAChB,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC;;;;;CAKb,CAAC,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,IAAI,CAAC,IAAc;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAA4B,CAAC;IACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACpB,CAAC,EAAE,CAAC;YACN,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAY,IAAI,SAAS,CAAC;IAC/D,MAAM,WAAW,GAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAY,IAAI,SAAS,CAAC;IAEjE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAU,EAAC;YAC9B,QAAQ;YACR,WAAW;YACX,KAAK,EAAE,sBAAsB;SAC9B,CAAC,CAAC;QACH,sCAAsC;QACtC,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;YACE,EAAE,EAAE,IAAI;YACR,QAAQ,EACN,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB;YAClE,MAAM;SACP,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,sCAAsC;QACtC,OAAO,CAAC,KAAK,CACX,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CACpE,CAAC;QACF,2CAA2C;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}