@tonyclaw/agent-inspector 3.0.45 → 3.0.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/{nitro.json → backend/nitro.json} +3 -3
- package/.output/backend-public/assets/index-D4LX-sw-.js +11 -0
- package/.output/cli.js +8018 -5451
- package/.output/server/_libs/extend.mjs +4 -8
- package/.output/server/_libs/jszip.mjs +9 -35
- package/.output/server/_libs/react-dom.mjs +2 -3
- package/.output/server/_libs/react.mjs +1 -27
- package/.output/server/_libs/tanstack__react-router.mjs +1 -329
- package/.output/server/_libs/tanstack__router-core.mjs +42 -100
- package/.output/server/_libs/use-sync-external-store.mjs +1 -64
- package/.output/server/_libs/ws.mjs +1 -1
- package/.output/server/_ssr/index.mjs +4 -4
- package/.output/server/_ssr/{publicBasePathContext-5264L3rX.mjs → publicBasePathContext-IH2ilOfu.mjs} +52 -24
- package/.output/server/_ssr/{router-BJ_ltLim.mjs → router-BwZEsYfS.mjs} +19794 -19444
- package/.output/server/_ssr/{start-C6MjPjxp.mjs → start-COQu_AgD.mjs} +1 -1
- package/.output/server/_tanstack-start-manifest_v-DnbdNeun.mjs +4 -0
- package/.output/server/index.mjs +5 -145
- package/.output/{public/assets/CompareDrawer-B3_TLTJh.js → ui/assets/CompareDrawer-V-8lPASC.js} +1 -1
- package/.output/{public/assets/InspectorPet-Cpn6hv4P.js → ui/assets/InspectorPet-D4CVnfdf.js} +1 -1
- package/.output/ui/assets/ProxyViewerContainer-CO3ZVHLX.js +59 -0
- package/.output/{public/assets/ReplayDialog-B3EKVdJk.js → ui/assets/ReplayDialog-CpGyTLtt.js} +1 -1
- package/.output/{public/assets/RequestAnatomy-COOQjyUC.js → ui/assets/RequestAnatomy-BLuJL9dZ.js} +1 -1
- package/.output/ui/assets/ResponseView-BuSC-CH7.js +2 -0
- package/.output/ui/assets/StreamingChunkSequence-DeA-JJKa.js +1 -0
- package/.output/{public/assets/_sessionId-zbgYl7ZJ.js → ui/assets/_sessionId-8HuHFhjo.js} +1 -1
- package/.output/{public/assets/_sessionId-BJlM3nmt.js → ui/assets/_sessionId-Chp67th6.js} +1 -1
- package/.output/ui/assets/favicon-DYEkHSNl.svg +21 -0
- package/.output/ui/assets/index-BvXp42al.css +1 -0
- package/.output/{public/assets/index-xF_NY8Yb.js → ui/assets/index-DPmKK_5d.js} +5 -5
- package/.output/{public/assets/index-BIK4bPTv.js → ui/assets/index-atoQrlb8.js} +1 -1
- package/.output/ui/assets/index-nY3E1vxV.js +73 -0
- package/.output/{public/assets/index-D2Qw6Ri2.js → ui/assets/index-nl9-dpZn.js} +1 -1
- package/.output/ui/assets/json-viewer-B9kIzqeX.js +1 -0
- package/.output/{public/assets/jszip.min-B_rfAUCe.js → ui/assets/jszip.min-B7tfyE-I.js} +1 -1
- package/.output/ui/index.html +229 -0
- package/.output/ui/runtime-config.js +2 -0
- package/.output/workers/logFinalizer.worker.js +979 -414
- package/.output/workers/sessionWorkerEntry.js +979 -414
- package/README.md +182 -43
- package/docs/instance-control.openapi.yaml +59 -4
- package/package.json +40 -6
- package/scripts/generate-theme-scales.mjs +3 -3
- package/src/{router.tsx → backend/router.tsx} +3 -15
- package/src/backend/routes/$.ts +26 -0
- package/src/backend/routes/__root.ts +4 -0
- package/src/backend/routes/api/-instances.ts +7 -0
- package/src/{routes → backend/routes}/api/alerts.summary.ts +3 -3
- package/src/{routes → backend/routes}/api/alerts.ts +4 -4
- package/src/{routes → backend/routes}/api/config.paths.ts +1 -1
- package/src/{routes → backend/routes}/api/config.ts +11 -2
- package/src/{routes → backend/routes}/api/ecosystem.packages.$packageId.help.ts +1 -1
- package/src/{routes → backend/routes}/api/ecosystem.packages.$packageId.install.ts +1 -1
- package/src/{routes → backend/routes}/api/ecosystem.packages.$packageId.runner-presets.ts +1 -1
- package/src/{routes → backend/routes}/api/ecosystem.packages.$packageId.upgrade.ts +1 -1
- package/src/{routes → backend/routes}/api/ecosystem.packages.ts +5 -1
- package/src/{routes → backend/routes}/api/ecosystem.recipes.$recipeId.run.ts +1 -1
- package/src/{routes → backend/routes}/api/ecosystem.tasks.$taskId.ts +1 -1
- package/src/{routes → backend/routes}/api/ecosystem.tasks.ts +1 -1
- package/src/{routes → backend/routes}/api/groups.$groupId.evidence.ts +2 -2
- package/src/{routes → backend/routes}/api/groups.$groupId.sessions.ts +2 -2
- package/src/{routes → backend/routes}/api/groups.$groupId.ts +2 -2
- package/src/{routes → backend/routes}/api/groups.ts +2 -2
- package/src/{routes → backend/routes}/api/health.ts +3 -3
- package/src/{routes → backend/routes}/api/instances.$name.connection.ts +1 -1
- package/src/{routes → backend/routes}/api/instances.$name.restart.ts +2 -2
- package/src/{routes → backend/routes}/api/instances.$name.start.ts +2 -2
- package/src/{routes → backend/routes}/api/instances.$name.stop.ts +2 -2
- package/src/{routes → backend/routes}/api/instances.$name.ts +1 -1
- package/src/{routes → backend/routes}/api/instances.ts +1 -1
- package/src/{routes → backend/routes}/api/knowledge.candidates.$candidateId.promote.ts +2 -2
- package/src/{routes → backend/routes}/api/knowledge.candidates.$candidateId.ts +2 -2
- package/src/{routes → backend/routes}/api/knowledge.candidates.ts +1 -1
- package/src/{routes → backend/routes}/api/knowledge.project-context.ts +2 -2
- package/src/{routes → backend/routes}/api/knowledge.search.ts +2 -2
- package/src/{routes → backend/routes}/api/knowledge.sessions.$sessionId.candidates.ts +3 -3
- package/src/{routes → backend/routes}/api/logs.$id.body.ts +6 -6
- package/src/{routes → backend/routes}/api/logs.$id.chunks.ts +5 -4
- package/src/{routes → backend/routes}/api/logs.$id.replay.ts +12 -11
- package/src/{routes → backend/routes}/api/logs.$id.ts +4 -3
- package/src/{routes → backend/routes}/api/logs.import.ts +3 -3
- package/src/{routes → backend/routes}/api/logs.stream.ts +11 -7
- package/src/{routes → backend/routes}/api/logs.ts +17 -9
- package/src/{routes → backend/routes}/api/mcp.ts +1 -1
- package/src/{routes → backend/routes}/api/models.ts +1 -1
- package/src/{routes → backend/routes}/api/pi-agent.ts +2 -2
- package/src/{routes → backend/routes}/api/providers.$providerId.model-metadata.ts +5 -5
- package/src/{routes → backend/routes}/api/providers.$providerId.test.log.ts +7 -7
- package/src/{routes → backend/routes}/api/providers.$providerId.ts +4 -4
- package/src/{routes → backend/routes}/api/providers.export.ts +1 -1
- package/src/{routes → backend/routes}/api/providers.import.ts +3 -3
- package/src/{routes → backend/routes}/api/providers.scan.ts +2 -2
- package/src/{routes → backend/routes}/api/providers.ts +9 -4
- package/src/{routes → backend/routes}/api/runs.$runId.evidence.ts +2 -2
- package/src/{routes → backend/routes}/api/runs.$runId.ts +2 -2
- package/src/{routes → backend/routes}/api/runs.ts +4 -4
- package/src/backend/routes/api/runtime.ts +46 -0
- package/src/{routes → backend/routes}/api/sessions.ts +3 -3
- package/src/{routes → backend/routes}/proxy/$.ts +1 -1
- package/src/{routes → backend/routes}/readyz.ts +1 -1
- package/src/{start.ts → backend/start.ts} +1 -1
- package/src/cli/alias.ts +2 -11
- package/src/cli/doctor.ts +32 -9
- package/src/cli/instance.ts +36 -13
- package/src/cli/instanceApi.ts +213 -0
- package/src/cli/instanceArgs.ts +46 -11
- package/src/cli/instanceControl.ts +10 -2
- package/src/cli/instanceModel.ts +18 -17
- package/src/cli/instanceRegistry.ts +0 -9
- package/src/cli/networkHints.ts +27 -14
- package/src/cli/onboard.ts +69 -2
- package/src/cli/onboardTarget.ts +89 -40
- package/src/cli/rustBackendPackage.ts +450 -0
- package/src/cli/templates/codex-skill-onboard.ts +44 -14
- package/src/cli/templates/skill-onboard.ts +64 -28
- package/src/cli.ts +341 -75
- package/src/components/ProxyViewer.tsx +11 -9
- package/src/components/ProxyViewerContainer.tsx +12 -11
- package/src/components/pi-agent/PiAgentPanel.tsx +2 -2
- package/src/components/providers/ProviderCard.tsx +1 -1
- package/src/components/providers/ProviderTestResultsView.tsx +1 -1
- package/src/components/providers/SettingsDialog.tsx +159 -144
- package/src/components/proxy-viewer/ApplicationBar.tsx +2 -1
- package/src/components/proxy-viewer/LogEntry.tsx +1 -1
- package/src/components/proxy-viewer/log-formats/index.ts +1 -1
- package/src/contracts/index.ts +5 -0
- package/src/contracts/log.ts +33 -3
- package/src/knowledge/types.ts +3 -2
- package/src/lib/alertContract.ts +2 -2
- package/src/lib/apiClient.ts +30 -7
- package/src/lib/apiFormat.ts +29 -0
- package/src/lib/backendImplementation.ts +16 -0
- package/src/lib/basePath.ts +29 -11
- package/src/lib/browserRuntimeContract.ts +124 -0
- package/src/lib/browserRuntimeResolver.ts +244 -0
- package/src/{proxy → lib}/claudeCodeStrip.ts +6 -7
- package/src/lib/codingAgentEndpoints.ts +38 -0
- package/src/lib/instanceContract.ts +30 -11
- package/src/lib/managedInstance.ts +9 -1
- package/src/lib/piAgentContract.ts +3 -2
- package/src/lib/publicBasePathContext.ts +40 -10
- package/src/lib/resourceLimits.ts +2 -0
- package/src/lib/runContract.ts +3 -3
- package/src/lib/sessionInfoContract.ts +3 -2
- package/src/mcp/instanceHandlers.ts +2 -0
- package/src/mcp/server.ts +19 -24
- package/src/proxy/config.ts +25 -30
- package/src/proxy/dataDir.ts +43 -7
- package/src/proxy/ecosystemTasks.ts +161 -70
- package/src/proxy/formats/registry.ts +6 -21
- package/src/proxy/handler.ts +129 -29
- package/src/proxy/identityProxy.ts +567 -39
- package/src/proxy/jsonlRecovery.ts +554 -0
- package/src/proxy/logFinalizer.ts +25 -10
- package/src/proxy/logImporter.ts +2 -1
- package/src/proxy/logIndex.ts +191 -95
- package/src/proxy/logger.ts +77 -14
- package/src/proxy/platformCommands.ts +41 -0
- package/src/proxy/privateDataPath.ts +310 -88
- package/src/proxy/rawStreamCapture.ts +194 -13
- package/src/proxy/runtimeAdmission.ts +5 -2
- package/src/proxy/runtimeHealth.ts +14 -1
- package/src/proxy/runtimeShutdown.ts +11 -1
- package/src/proxy/schemas.ts +7 -1
- package/src/proxy/sessionArchive.ts +70 -14
- package/src/proxy/sqliteLogIndex.ts +65 -42
- package/src/proxy/store.ts +141 -34
- package/src/proxy/uiAssetServer.ts +106 -0
- package/src/proxy/upstream.ts +29 -2
- package/src/ui/bootstrap.ts +167 -0
- package/src/ui/index.html +38 -0
- package/src/ui/logsStreamClient.ts +20 -0
- package/src/ui/main.tsx +13 -0
- package/src/ui/public/runtime-config.js +2 -0
- package/src/ui/router.tsx +13 -0
- package/src/ui/routes/__root.tsx +69 -0
- package/src/{routes → ui/routes}/index.tsx +2 -3
- package/src/{routes → ui/routes}/session/$sessionId.tsx +5 -11
- package/src/ui/runtimeDiscovery.ts +50 -0
- package/styles/globals.css +1 -0
- package/.output/public/assets/ProxyViewerContainer-BEAhuGOJ.js +0 -126
- package/.output/public/assets/ResponseView-DBCjkwye.js +0 -2
- package/.output/public/assets/StreamingChunkSequence-CuXhDgMo.js +0 -1
- package/.output/public/assets/index-BZo_8koU.js +0 -70
- package/.output/public/assets/index-ZWschkCh.css +0 -1
- package/.output/public/assets/json-viewer-B-Ao6pwW.js +0 -1
- package/.output/server/_libs/@radix-ui/react-accessible-icon+[...].mjs +0 -1
- package/.output/server/_libs/@radix-ui/react-dismissable-layer+[...].mjs +0 -344
- package/.output/server/_libs/@radix-ui/react-navigation-menu+[...].mjs +0 -2
- package/.output/server/_libs/@radix-ui/react-one-time-password-field+[...].mjs +0 -2
- package/.output/server/_libs/@radix-ui/react-password-toggle-field+[...].mjs +0 -2
- package/.output/server/_libs/@radix-ui/react-use-callback-ref+[...].mjs +0 -11
- package/.output/server/_libs/@radix-ui/react-use-controllable-state+[...].mjs +0 -69
- package/.output/server/_libs/@radix-ui/react-use-effect-event+[...].mjs +0 -1
- package/.output/server/_libs/@radix-ui/react-use-is-hydrated+[...].mjs +0 -28
- package/.output/server/_libs/@radix-ui/react-use-layout-effect+[...].mjs +0 -6
- package/.output/server/_libs/@radix-ui/react-visually-hidden+[...].mjs +0 -34
- package/.output/server/_libs/aria-hidden.mjs +0 -122
- package/.output/server/_libs/bail.mjs +0 -8
- package/.output/server/_libs/character-entities.mjs +0 -2130
- package/.output/server/_libs/class-variance-authority.mjs +0 -44
- package/.output/server/_libs/clsx.mjs +0 -16
- package/.output/server/_libs/comma-separated-tokens.mjs +0 -10
- package/.output/server/_libs/decode-named-character-reference+[...].mjs +0 -8
- package/.output/server/_libs/dequal.mjs +0 -27
- package/.output/server/_libs/detect-node-es.mjs +0 -1
- package/.output/server/_libs/devlop.mjs +0 -8
- package/.output/server/_libs/diff.mjs +0 -320
- package/.output/server/_libs/estree-util-is-identifier-name.mjs +0 -11
- package/.output/server/_libs/floating-ui__core.mjs +0 -725
- package/.output/server/_libs/floating-ui__dom.mjs +0 -622
- package/.output/server/_libs/floating-ui__react-dom.mjs +0 -292
- package/.output/server/_libs/floating-ui__utils.mjs +0 -320
- package/.output/server/_libs/get-nonce.mjs +0 -9
- package/.output/server/_libs/hast-util-to-jsx-runtime.mjs +0 -388
- package/.output/server/_libs/hast-util-whitespace.mjs +0 -10
- package/.output/server/_libs/html-url-attributes.mjs +0 -26
- package/.output/server/_libs/inline-style-parser.mjs +0 -142
- package/.output/server/_libs/is-plain-obj.mjs +0 -10
- package/.output/server/_libs/lucide-react.mjs +0 -1027
- package/.output/server/_libs/mdast-util-from-markdown.mjs +0 -717
- package/.output/server/_libs/mdast-util-to-hast.mjs +0 -710
- package/.output/server/_libs/mdast-util-to-string.mjs +0 -38
- package/.output/server/_libs/micromark-core-commonmark.mjs +0 -2259
- package/.output/server/_libs/micromark-factory-destination.mjs +0 -94
- package/.output/server/_libs/micromark-factory-label.mjs +0 -63
- package/.output/server/_libs/micromark-factory-space.mjs +0 -24
- package/.output/server/_libs/micromark-factory-title.mjs +0 -65
- package/.output/server/_libs/micromark-factory-whitespace.mjs +0 -22
- package/.output/server/_libs/micromark-util-character.mjs +0 -44
- package/.output/server/_libs/micromark-util-chunked.mjs +0 -36
- package/.output/server/_libs/micromark-util-classify-character+[...].mjs +0 -12
- package/.output/server/_libs/micromark-util-combine-extensions+[...].mjs +0 -41
- package/.output/server/_libs/micromark-util-decode-numeric-character-reference+[...].mjs +0 -19
- package/.output/server/_libs/micromark-util-decode-string.mjs +0 -21
- package/.output/server/_libs/micromark-util-encode.mjs +0 -1
- package/.output/server/_libs/micromark-util-html-tag-name.mjs +0 -69
- package/.output/server/_libs/micromark-util-normalize-identifier+[...].mjs +0 -6
- package/.output/server/_libs/micromark-util-resolve-all.mjs +0 -15
- package/.output/server/_libs/micromark-util-sanitize-uri.mjs +0 -41
- package/.output/server/_libs/micromark-util-subtokenize.mjs +0 -346
- package/.output/server/_libs/micromark.mjs +0 -906
- package/.output/server/_libs/property-information.mjs +0 -1209
- package/.output/server/_libs/radix-ui.mjs +0 -1
- package/.output/server/_libs/radix-ui__number.mjs +0 -6
- package/.output/server/_libs/radix-ui__primitive.mjs +0 -11
- package/.output/server/_libs/radix-ui__react-accordion.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-alert-dialog.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-arrow.mjs +0 -23
- package/.output/server/_libs/radix-ui__react-aspect-ratio.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-avatar.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-checkbox.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-collapsible.mjs +0 -144
- package/.output/server/_libs/radix-ui__react-collection.mjs +0 -69
- package/.output/server/_libs/radix-ui__react-compose-refs.mjs +0 -38
- package/.output/server/_libs/radix-ui__react-context-menu.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-context.mjs +0 -64
- package/.output/server/_libs/radix-ui__react-dialog.mjs +0 -280
- package/.output/server/_libs/radix-ui__react-direction.mjs +0 -9
- package/.output/server/_libs/radix-ui__react-dropdown-menu.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-focus-guards.mjs +0 -39
- package/.output/server/_libs/radix-ui__react-focus-scope.mjs +0 -210
- package/.output/server/_libs/radix-ui__react-form.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-hover-card.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-id.mjs +0 -14
- package/.output/server/_libs/radix-ui__react-label.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-menu.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-menubar.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-popover.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-popper.mjs +0 -340
- package/.output/server/_libs/radix-ui__react-portal.mjs +0 -16
- package/.output/server/_libs/radix-ui__react-presence.mjs +0 -173
- package/.output/server/_libs/radix-ui__react-primitive.mjs +0 -42
- package/.output/server/_libs/radix-ui__react-progress.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-radio-group.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-roving-focus.mjs +0 -235
- package/.output/server/_libs/radix-ui__react-scroll-area.mjs +0 -731
- package/.output/server/_libs/radix-ui__react-select.mjs +0 -1207
- package/.output/server/_libs/radix-ui__react-separator.mjs +0 -28
- package/.output/server/_libs/radix-ui__react-slider.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-slot.mjs +0 -132
- package/.output/server/_libs/radix-ui__react-switch.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-tabs.mjs +0 -194
- package/.output/server/_libs/radix-ui__react-toast.mjs +0 -2
- package/.output/server/_libs/radix-ui__react-toggle-group.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-toggle.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-toolbar.mjs +0 -1
- package/.output/server/_libs/radix-ui__react-tooltip.mjs +0 -498
- package/.output/server/_libs/radix-ui__react-use-previous.mjs +0 -14
- package/.output/server/_libs/radix-ui__react-use-size.mjs +0 -39
- package/.output/server/_libs/react-markdown.mjs +0 -235
- package/.output/server/_libs/react-remove-scroll-bar.mjs +0 -82
- package/.output/server/_libs/react-remove-scroll.mjs +0 -328
- package/.output/server/_libs/react-style-singleton.mjs +0 -69
- package/.output/server/_libs/remark-parse.mjs +0 -19
- package/.output/server/_libs/remark-rehype.mjs +0 -21
- package/.output/server/_libs/space-separated-tokens.mjs +0 -6
- package/.output/server/_libs/style-to-js.mjs +0 -72
- package/.output/server/_libs/style-to-object.mjs +0 -38
- package/.output/server/_libs/swr.mjs +0 -947
- package/.output/server/_libs/tailwind-merge.mjs +0 -3255
- package/.output/server/_libs/tanstack__react-virtual.mjs +0 -130
- package/.output/server/_libs/tanstack__virtual-core.mjs +0 -1319
- package/.output/server/_libs/three.mjs +0 -26016
- package/.output/server/_libs/trim-lines.mjs +0 -41
- package/.output/server/_libs/trough.mjs +0 -85
- package/.output/server/_libs/tslib.mjs +0 -1
- package/.output/server/_libs/ungap__structured-clone.mjs +0 -212
- package/.output/server/_libs/unified.mjs +0 -661
- package/.output/server/_libs/unist-util-is.mjs +0 -100
- package/.output/server/_libs/unist-util-position.mjs +0 -27
- package/.output/server/_libs/unist-util-stringify-position.mjs +0 -27
- package/.output/server/_libs/unist-util-visit-parents.mjs +0 -82
- package/.output/server/_libs/unist-util-visit.mjs +0 -24
- package/.output/server/_libs/use-callback-ref.mjs +0 -66
- package/.output/server/_libs/use-sidecar.mjs +0 -106
- package/.output/server/_libs/vfile-message.mjs +0 -138
- package/.output/server/_libs/vfile.mjs +0 -467
- package/.output/server/_sessionId-CJ99gZFV.mjs +0 -84
- package/.output/server/_sessionId-DEjScBpK.mjs +0 -146
- package/.output/server/_ssr/CompareDrawer-DtOIMeQB.mjs +0 -1060
- package/.output/server/_ssr/InspectorPet-CXc4oCBQ.mjs +0 -938
- package/.output/server/_ssr/ProxyViewerContainer-DVPlwfkt.mjs +0 -17632
- package/.output/server/_ssr/ReplayDialog-BQEA95qC.mjs +0 -725
- package/.output/server/_ssr/RequestAnatomy-BMyd8B7Q.mjs +0 -837
- package/.output/server/_ssr/ResponseView-qrTaEIM8.mjs +0 -757
- package/.output/server/_ssr/StreamingChunkSequence-BFTL8mIy.mjs +0 -274
- package/.output/server/_ssr/index-Bcj1Hcy4.mjs +0 -135
- package/.output/server/_ssr/index-DW-M7XUG.mjs +0 -84
- package/.output/server/_ssr/json-viewer-DiI0Yjsn.mjs +0 -483
- package/.output/server/_tanstack-start-manifest_v-C6pXXX9R.mjs +0 -4
- package/.output/server/node_modules/tslib/modules/index.js +0 -70
- package/.output/server/node_modules/tslib/modules/package.json +0 -3
- package/.output/server/node_modules/tslib/package.json +0 -47
- package/.output/server/node_modules/tslib/tslib.js +0 -484
- package/.output/server/package.json +0 -9
- package/src/routes/__root.tsx +0 -170
- package/src/routes/api/-instances.ts +0 -109
- /package/.output/{public → ui}/assets/agent-inspector-58K1_MsC.ico +0 -0
- /package/.output/{public → ui}/assets/alibaba-TTwafVwX.svg +0 -0
- /package/.output/{public → ui}/assets/minimax-BPMzvuL-.jpeg +0 -0
- /package/.output/{public → ui}/assets/qwen-mMn3f5ul.webp +0 -0
- /package/.output/{public → ui}/assets/zhipuai-BPNAnxo-.svg +0 -0
- /package/src/{routes → backend/routes}/livez.ts +0 -0
package/src/cli/onboard.ts
CHANGED
|
@@ -78,6 +78,9 @@ export type OnboardFlags = {
|
|
|
78
78
|
mimoMcpUrl: string | null;
|
|
79
79
|
instanceName: string | null;
|
|
80
80
|
baseUrl: string | null;
|
|
81
|
+
controlBaseUrl: string | null;
|
|
82
|
+
agentBaseUrl: string | null;
|
|
83
|
+
uiUrl: string | null | undefined;
|
|
81
84
|
mcpName: string | null;
|
|
82
85
|
uninstall: boolean;
|
|
83
86
|
status: boolean;
|
|
@@ -212,6 +215,9 @@ function parseFlags(argv: readonly string[]): OnboardFlags {
|
|
|
212
215
|
mimoMcpUrl: null,
|
|
213
216
|
instanceName: null,
|
|
214
217
|
baseUrl: null,
|
|
218
|
+
controlBaseUrl: null,
|
|
219
|
+
agentBaseUrl: null,
|
|
220
|
+
uiUrl: undefined,
|
|
215
221
|
mcpName: null,
|
|
216
222
|
uninstall: false,
|
|
217
223
|
status: false,
|
|
@@ -360,6 +366,39 @@ function parseFlags(argv: readonly string[]): OnboardFlags {
|
|
|
360
366
|
i++;
|
|
361
367
|
break;
|
|
362
368
|
}
|
|
369
|
+
case "--control-base-url": {
|
|
370
|
+
const next = argv[i + 1];
|
|
371
|
+
if (next === undefined || next.trim().length === 0) {
|
|
372
|
+
process.stderr.write("agent-inspector onboard: --control-base-url requires a URL\n");
|
|
373
|
+
process.exit(2);
|
|
374
|
+
}
|
|
375
|
+
flags.controlBaseUrl = next;
|
|
376
|
+
i++;
|
|
377
|
+
break;
|
|
378
|
+
}
|
|
379
|
+
case "--agent-base-url": {
|
|
380
|
+
const next = argv[i + 1];
|
|
381
|
+
if (next === undefined || next.trim().length === 0) {
|
|
382
|
+
process.stderr.write("agent-inspector onboard: --agent-base-url requires a URL\n");
|
|
383
|
+
process.exit(2);
|
|
384
|
+
}
|
|
385
|
+
flags.agentBaseUrl = next;
|
|
386
|
+
i++;
|
|
387
|
+
break;
|
|
388
|
+
}
|
|
389
|
+
case "--ui-url": {
|
|
390
|
+
const next = argv[i + 1];
|
|
391
|
+
if (next === undefined || next.trim().length === 0) {
|
|
392
|
+
process.stderr.write("agent-inspector onboard: --ui-url requires a URL\n");
|
|
393
|
+
process.exit(2);
|
|
394
|
+
}
|
|
395
|
+
flags.uiUrl = next;
|
|
396
|
+
i++;
|
|
397
|
+
break;
|
|
398
|
+
}
|
|
399
|
+
case "--no-ui":
|
|
400
|
+
flags.uiUrl = null;
|
|
401
|
+
break;
|
|
363
402
|
case "--mcp-name": {
|
|
364
403
|
const next = argv[i + 1];
|
|
365
404
|
if (next === undefined || next.trim().length === 0) {
|
|
@@ -440,7 +479,11 @@ Options:
|
|
|
440
479
|
MiMo Code MCP transport to write (default: local)
|
|
441
480
|
--mimo-mcp-url <url> Agent Inspector MCP endpoint for MiMo Code
|
|
442
481
|
--instance <name> Target a registered named Inspector instance
|
|
443
|
-
--base-url <url> Target an explicit credential-free
|
|
482
|
+
--base-url <url> Target an explicit credential-free backend control/agent Base URL
|
|
483
|
+
--control-base-url <url> Control API Base URL for a separated deployment
|
|
484
|
+
--agent-base-url <url> Proxy and MCP Base URL for Coding Agents
|
|
485
|
+
--ui-url <url> Browser UI URL for a separated deployment
|
|
486
|
+
--no-ui Declare that the explicit target has no browser UI
|
|
444
487
|
--mcp-name <name> MCP config key (named default: agent-inspector-<instance>)
|
|
445
488
|
--uninstall Remove generated files whose version matches this package
|
|
446
489
|
--status Show installed onboarding file versions and suggested action
|
|
@@ -533,7 +576,22 @@ function onboardSelectionArguments(flags: OnboardFlags, target: OnboardTarget):
|
|
|
533
576
|
if (target.kind === "instance" && target.instanceName !== null) {
|
|
534
577
|
args.push("--instance", target.instanceName);
|
|
535
578
|
} else if (target.kind === "base-url") {
|
|
536
|
-
|
|
579
|
+
const usedSharedBaseUrl =
|
|
580
|
+
flags.baseUrl !== null &&
|
|
581
|
+
flags.controlBaseUrl === null &&
|
|
582
|
+
flags.agentBaseUrl === null &&
|
|
583
|
+
flags.uiUrl === undefined;
|
|
584
|
+
if (usedSharedBaseUrl) {
|
|
585
|
+
args.push("--base-url", target.baseUrl);
|
|
586
|
+
} else {
|
|
587
|
+
args.push("--control-base-url", target.controlBaseUrl);
|
|
588
|
+
args.push("--agent-base-url", target.agentBaseUrl);
|
|
589
|
+
if (target.uiUrl === null) {
|
|
590
|
+
args.push("--no-ui");
|
|
591
|
+
} else {
|
|
592
|
+
args.push("--ui-url", target.uiUrl);
|
|
593
|
+
}
|
|
594
|
+
}
|
|
537
595
|
}
|
|
538
596
|
if (flags.mcpName !== null) args.push("--mcp-name", target.mcpName);
|
|
539
597
|
return args.length === 0 ? "" : ` ${args.join(" ")}`;
|
|
@@ -1202,6 +1260,9 @@ function buildPlannedFiles(
|
|
|
1202
1260
|
version,
|
|
1203
1261
|
port: onboardTarget.port,
|
|
1204
1262
|
baseUrl: onboardTarget.baseUrl,
|
|
1263
|
+
controlBaseUrl: onboardTarget.controlBaseUrl,
|
|
1264
|
+
agentBaseUrl: onboardTarget.agentBaseUrl,
|
|
1265
|
+
uiUrl: onboardTarget.uiUrl,
|
|
1205
1266
|
mcpName: onboardTarget.mcpName,
|
|
1206
1267
|
targetKind: onboardTarget.kind,
|
|
1207
1268
|
instanceName: onboardTarget.instanceName,
|
|
@@ -1215,6 +1276,9 @@ function buildPlannedFiles(
|
|
|
1215
1276
|
version,
|
|
1216
1277
|
port: onboardTarget.port,
|
|
1217
1278
|
baseUrl: onboardTarget.baseUrl,
|
|
1279
|
+
controlBaseUrl: onboardTarget.controlBaseUrl,
|
|
1280
|
+
agentBaseUrl: onboardTarget.agentBaseUrl,
|
|
1281
|
+
uiUrl: onboardTarget.uiUrl,
|
|
1218
1282
|
mcpName: onboardTarget.mcpName,
|
|
1219
1283
|
targetKind: onboardTarget.kind,
|
|
1220
1284
|
instanceName: onboardTarget.instanceName,
|
|
@@ -1449,6 +1513,9 @@ function runOnboardSync(argv: readonly string[]): number {
|
|
|
1449
1513
|
const resolvedTarget = resolveOnboardTarget({
|
|
1450
1514
|
instanceName: flags.instanceName,
|
|
1451
1515
|
baseUrl: flags.baseUrl,
|
|
1516
|
+
controlBaseUrl: flags.controlBaseUrl,
|
|
1517
|
+
agentBaseUrl: flags.agentBaseUrl,
|
|
1518
|
+
uiUrl: flags.uiUrl,
|
|
1452
1519
|
mcpName: flags.mcpName,
|
|
1453
1520
|
});
|
|
1454
1521
|
if (!resolvedTarget.ok) {
|
package/src/cli/onboardTarget.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { appendBasePathToOrigin, getConfiguredBasePath } from "../lib/basePath.js";
|
|
2
|
+
import { normalizeBrowserRuntimeBaseUrl } from "../lib/browserRuntimeContract.js";
|
|
2
3
|
import { getInstancesRoot, readInstanceRecord, validateInstanceName } from "./instanceRegistry.js";
|
|
3
4
|
import { urlForHost } from "./networkHints.js";
|
|
4
5
|
|
|
5
6
|
const DEFAULT_PORT = 9527;
|
|
6
7
|
const DEFAULT_ORIGIN = `http://localhost:${String(DEFAULT_PORT)}`;
|
|
8
|
+
const AGENT_INSPECTOR_PUBLIC_ORIGIN_ENV = "AGENT_INSPECTOR_PUBLIC_ORIGIN";
|
|
7
9
|
const MCP_NAME_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/u;
|
|
8
10
|
|
|
9
11
|
type OnboardTargetEnv = Readonly<Record<string, string | undefined>>;
|
|
@@ -15,6 +17,10 @@ export type OnboardTarget = {
|
|
|
15
17
|
instanceName: string | null;
|
|
16
18
|
mcpName: string;
|
|
17
19
|
port: number;
|
|
20
|
+
uiUrl: string | null;
|
|
21
|
+
controlBaseUrl: string;
|
|
22
|
+
agentBaseUrl: string;
|
|
23
|
+
/** @deprecated Compatibility alias for controlBaseUrl. */
|
|
18
24
|
baseUrl: string;
|
|
19
25
|
apiUrl: string;
|
|
20
26
|
healthUrl: string;
|
|
@@ -26,6 +32,9 @@ export type OnboardTarget = {
|
|
|
26
32
|
export type OnboardTargetOptions = {
|
|
27
33
|
instanceName: string | null;
|
|
28
34
|
baseUrl: string | null;
|
|
35
|
+
controlBaseUrl?: string | null;
|
|
36
|
+
agentBaseUrl?: string | null;
|
|
37
|
+
uiUrl?: string | null;
|
|
29
38
|
mcpName: string | null;
|
|
30
39
|
};
|
|
31
40
|
|
|
@@ -33,24 +42,29 @@ export type OnboardTargetResult =
|
|
|
33
42
|
| { ok: true; target: OnboardTarget }
|
|
34
43
|
| { ok: false; message: string };
|
|
35
44
|
|
|
36
|
-
function
|
|
45
|
+
function targetFromSurfaces(
|
|
37
46
|
kind: OnboardTargetKind,
|
|
38
47
|
instanceName: string | null,
|
|
39
48
|
mcpName: string,
|
|
40
49
|
port: number,
|
|
41
|
-
|
|
50
|
+
controlBaseUrl: string,
|
|
51
|
+
agentBaseUrl: string,
|
|
52
|
+
uiUrl: string | null,
|
|
42
53
|
): OnboardTarget {
|
|
43
54
|
return {
|
|
44
55
|
kind,
|
|
45
56
|
instanceName,
|
|
46
57
|
mcpName,
|
|
47
58
|
port,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
59
|
+
uiUrl,
|
|
60
|
+
controlBaseUrl,
|
|
61
|
+
agentBaseUrl,
|
|
62
|
+
baseUrl: controlBaseUrl,
|
|
63
|
+
apiUrl: `${controlBaseUrl}/api`,
|
|
64
|
+
healthUrl: `${controlBaseUrl}/api/health`,
|
|
65
|
+
anthropicProxyUrl: `${agentBaseUrl}/proxy`,
|
|
66
|
+
openAiProxyUrl: `${agentBaseUrl}/proxy/v1`,
|
|
67
|
+
mcpUrl: `${agentBaseUrl}/api/mcp`,
|
|
54
68
|
};
|
|
55
69
|
}
|
|
56
70
|
|
|
@@ -60,31 +74,33 @@ function validateMcpName(rawName: string): string | null {
|
|
|
60
74
|
}
|
|
61
75
|
|
|
62
76
|
function normalizeExplicitBaseUrl(rawBaseUrl: string): { baseUrl: string; port: number } | null {
|
|
63
|
-
const
|
|
64
|
-
if (
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
77
|
+
const baseUrl = normalizeBrowserRuntimeBaseUrl(rawBaseUrl);
|
|
78
|
+
if (baseUrl === null) return null;
|
|
79
|
+
try {
|
|
80
|
+
const parsed = new URL(baseUrl);
|
|
81
|
+
const defaultPort = parsed.protocol === "https:" ? 443 : 80;
|
|
82
|
+
const port = parsed.port === "" ? defaultPort : Number(parsed.port);
|
|
83
|
+
return Number.isInteger(port) && port >= 1 && port <= 65_535 ? { baseUrl, port } : null;
|
|
84
|
+
} catch {
|
|
70
85
|
return null;
|
|
71
86
|
}
|
|
87
|
+
}
|
|
72
88
|
|
|
89
|
+
function normalizePublicOrigin(rawOrigin: string): string | null {
|
|
90
|
+
if (rawOrigin.trim() !== rawOrigin) return null;
|
|
73
91
|
try {
|
|
74
|
-
const parsed = new URL(
|
|
92
|
+
const parsed = new URL(rawOrigin);
|
|
75
93
|
if (
|
|
76
94
|
(parsed.protocol !== "http:" && parsed.protocol !== "https:") ||
|
|
77
|
-
parsed.hostname.length === 0 ||
|
|
78
95
|
parsed.username.length > 0 ||
|
|
79
|
-
parsed.password.length > 0
|
|
96
|
+
parsed.password.length > 0 ||
|
|
97
|
+
parsed.pathname !== "/" ||
|
|
98
|
+
parsed.search.length > 0 ||
|
|
99
|
+
parsed.hash.length > 0
|
|
80
100
|
) {
|
|
81
101
|
return null;
|
|
82
102
|
}
|
|
83
|
-
|
|
84
|
-
const baseUrl = `${parsed.origin}${pathname === "" ? "" : pathname}`;
|
|
85
|
-
const defaultPort = parsed.protocol === "https:" ? 443 : 80;
|
|
86
|
-
const port = parsed.port === "" ? defaultPort : Number(parsed.port);
|
|
87
|
-
return Number.isInteger(port) && port >= 1 && port <= 65_535 ? { baseUrl, port } : null;
|
|
103
|
+
return parsed.origin;
|
|
88
104
|
} catch {
|
|
89
105
|
return null;
|
|
90
106
|
}
|
|
@@ -94,10 +110,16 @@ export function resolveOnboardTarget(
|
|
|
94
110
|
options: OnboardTargetOptions,
|
|
95
111
|
env: OnboardTargetEnv = process.env,
|
|
96
112
|
): OnboardTargetResult {
|
|
97
|
-
|
|
113
|
+
const hasExplicitSurface =
|
|
114
|
+
options.baseUrl !== null ||
|
|
115
|
+
(options.controlBaseUrl !== null && options.controlBaseUrl !== undefined) ||
|
|
116
|
+
(options.agentBaseUrl !== null && options.agentBaseUrl !== undefined) ||
|
|
117
|
+
options.uiUrl !== undefined;
|
|
118
|
+
if (options.instanceName !== null && hasExplicitSurface) {
|
|
98
119
|
return {
|
|
99
120
|
ok: false,
|
|
100
|
-
message:
|
|
121
|
+
message:
|
|
122
|
+
"--instance and explicit --base-url/--control-base-url/--agent-base-url/--ui-url options are mutually exclusive",
|
|
101
123
|
};
|
|
102
124
|
}
|
|
103
125
|
|
|
@@ -110,23 +132,39 @@ export function resolveOnboardTarget(
|
|
|
110
132
|
};
|
|
111
133
|
}
|
|
112
134
|
|
|
113
|
-
if (
|
|
114
|
-
const
|
|
115
|
-
|
|
135
|
+
if (hasExplicitSurface) {
|
|
136
|
+
const sharedRaw = options.baseUrl;
|
|
137
|
+
const controlRaw = options.controlBaseUrl ?? sharedRaw ?? options.agentBaseUrl;
|
|
138
|
+
const agentRaw = options.agentBaseUrl ?? sharedRaw ?? options.controlBaseUrl;
|
|
139
|
+
const control =
|
|
140
|
+
controlRaw === null || controlRaw === undefined ? null : normalizeExplicitBaseUrl(controlRaw);
|
|
141
|
+
const agent =
|
|
142
|
+
agentRaw === null || agentRaw === undefined ? null : normalizeExplicitBaseUrl(agentRaw);
|
|
143
|
+
const ui =
|
|
144
|
+
options.uiUrl === undefined || options.uiUrl === null
|
|
145
|
+
? null
|
|
146
|
+
: normalizeExplicitBaseUrl(options.uiUrl);
|
|
147
|
+
if (
|
|
148
|
+
control === null ||
|
|
149
|
+
agent === null ||
|
|
150
|
+
(options.uiUrl !== undefined && options.uiUrl !== null && ui === null)
|
|
151
|
+
) {
|
|
116
152
|
return {
|
|
117
153
|
ok: false,
|
|
118
154
|
message:
|
|
119
|
-
"
|
|
155
|
+
"Explicit UI, control, and agent Base URLs must be credential-free HTTP(S) URLs without a query or fragment",
|
|
120
156
|
};
|
|
121
157
|
}
|
|
122
158
|
return {
|
|
123
159
|
ok: true,
|
|
124
|
-
target:
|
|
160
|
+
target: targetFromSurfaces(
|
|
125
161
|
"base-url",
|
|
126
162
|
null,
|
|
127
163
|
explicitMcpName ?? "agent-inspector",
|
|
128
|
-
|
|
129
|
-
|
|
164
|
+
control.port,
|
|
165
|
+
control.baseUrl,
|
|
166
|
+
agent.baseUrl,
|
|
167
|
+
ui?.baseUrl ?? null,
|
|
130
168
|
),
|
|
131
169
|
};
|
|
132
170
|
}
|
|
@@ -150,30 +188,41 @@ export function resolveOnboardTarget(
|
|
|
150
188
|
const baseUrl = appendBasePathToOrigin(origin, "/", record.value.basePath);
|
|
151
189
|
return {
|
|
152
190
|
ok: true,
|
|
153
|
-
target:
|
|
191
|
+
target: targetFromSurfaces(
|
|
154
192
|
"instance",
|
|
155
193
|
record.value.name,
|
|
156
194
|
explicitMcpName ?? `agent-inspector-${record.value.name}`,
|
|
157
195
|
record.value.publicPort,
|
|
158
196
|
baseUrl,
|
|
197
|
+
baseUrl,
|
|
198
|
+
record.value.uiEnabled ? baseUrl : null,
|
|
159
199
|
),
|
|
160
200
|
};
|
|
161
201
|
}
|
|
162
202
|
|
|
163
|
-
const
|
|
203
|
+
const configuredPublicOrigin = env[AGENT_INSPECTOR_PUBLIC_ORIGIN_ENV];
|
|
204
|
+
const publicOrigin =
|
|
205
|
+
configuredPublicOrigin === undefined
|
|
206
|
+
? DEFAULT_ORIGIN
|
|
207
|
+
: normalizePublicOrigin(configuredPublicOrigin);
|
|
208
|
+
if (publicOrigin === null) {
|
|
209
|
+
return {
|
|
210
|
+
ok: false,
|
|
211
|
+
message:
|
|
212
|
+
"AGENT_INSPECTOR_PUBLIC_ORIGIN must be an exact credential-free HTTP(S) origin without a path, query, or fragment",
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
const baseUrl = appendBasePathToOrigin(publicOrigin, "/", getConfiguredBasePath(env));
|
|
164
216
|
return {
|
|
165
217
|
ok: true,
|
|
166
|
-
target:
|
|
218
|
+
target: targetFromSurfaces(
|
|
167
219
|
"default",
|
|
168
220
|
null,
|
|
169
221
|
explicitMcpName ?? "agent-inspector",
|
|
170
222
|
DEFAULT_PORT,
|
|
171
223
|
baseUrl,
|
|
224
|
+
baseUrl,
|
|
225
|
+
env["AGENT_INSPECTOR_BACKEND_ONLY"] === "1" ? null : baseUrl,
|
|
172
226
|
),
|
|
173
227
|
};
|
|
174
228
|
}
|
|
175
|
-
|
|
176
|
-
export const onboardTargetForTests = {
|
|
177
|
-
normalizeExplicitBaseUrl,
|
|
178
|
-
validateMcpName,
|
|
179
|
-
};
|