{"ref":"artifact:saptools-cf-inspector","page":"/artifacts/saptools-cf-inspector","json":"/artifacts/saptools-cf-inspector.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"saptools-cf-inspector","name":"@saptools/cf-inspector","artifact_type":"cli","ecosystem":"btp","domain":"developer-experience","origin_ring":"independent","description":{"one_line":"Sets breakpoints, captures variable snapshots and evaluates expressions on a remote [Node.js](external:nodejs) process over the Chrome DevTools Protocol from the shell, with no IDE attached.","short":"Shell debugger for remote Node.js over the Chrome DevTools Protocol","what_it_solves":"Built so an AI agent or a CI job can debug a running [Node.js](external:nodejs) process from one shell command and read the result as JSON. `cf-inspector snapshot --bp src/handler.ts:42` arms the breakpoint, waits for the hit, evaluates the requested expressions, resumes and exits, `exception` does the same once for a thrown exception, and `watch` and `log` stream the same kind of capture as JSON Lines. Captures run under V8's side-effect check by default, so an expression that would change the live process comes back blocked unless `--allow-mutation` is passed. Given `--app`, `--region`, `--org` and `--space` it opens the [Cloud Foundry](artifact:btp-cloud-foundry-runtime) tunnel through [@saptools/cf-debugger](artifact:saptools-cf-debugger) and closes it on exit; given `--port` it attaches to any inspector already listening. Only one local `cf-inspector` may debug a target at a time, and a debugger running on another machine is not detected."},"links":{"npm":"https://www.npmjs.com/package/@saptools/cf-inspector","repo":"https://github.com/dongitran/saptools","docs":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/README.md"},"identity":{"author":"dongitran","license":"MIT"},"compat":{"deployment":["cf"]},"type_properties":{"distribution":{"value":["npm"],"sources":[{"url":"https://github.com/dongitran/saptools","title":"@saptools/cf-inspector — README","checked":"2026-10-18","quote":"npm install -g @saptools/cf-inspector"}]}},"provides":["capability:debugging"],"requires":[{"ref":"artifact:saptools-cf-debugger","for":"Opens and closes the Cloud Foundry SSH tunnel when the target is given as app, region, org and space; it is installed with this package either way.","requirement":"required","sources":[{"url":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/README.md","title":"dongitran/saptools — packages/cf-inspector/README.md","checked":"2026-10-15","quote":"This command internally calls `@saptools/cf-debugger` to open the SSH tunnel, runs the snapshot through it, and tears the tunnel down on exit."},{"url":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/README.md","title":"dongitran/saptools — packages/cf-inspector/README.md","checked":"2026-10-15","quote":"Cloud Foundry support uses `@saptools/cf-debugger`, which is installed automatically as a normal runtime dependency."}]},{"ref":"external:nodejs","for":"Runs on Node.js 20 or newer.","requirement":"required","sources":[{"url":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/README.md","title":"dongitran/saptools — packages/cf-inspector/README.md","checked":"2026-10-15","quote":"Requires **Node.js ≥ 20**."}]}],"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-10-15"},"maintainers":["actor:dong-tran"],"contributors":["actor:dong-tran"],"drafted_with_ai":true,"changed_in":[{"version":"0.5.0","date":"2026-07-13","what_changed":"`--app` no longer takes missing selectors from the current `cf target`: every command needs `--region`, `--org` and `--space` beside it.","invalidates":"Commands in a README or an agent prompt that pass `--app` alone and rely on the current `cf target`.","source":{"url":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/CHANGELOG.md#050---2026-07-13","title":"@saptools/cf-inspector changelog, 0.5.0","checked":"2026-10-19","quote":"`--app` no longer fills missing selectors from ambient `cf target` state. Every command now requires explicit `--region`, `--org`, and `--space` alongside `--app`"}},{"version":"0.7.0","date":"2026-07-22","what_changed":"Without an isolate selector, `snapshot`, `watch`, `exception` and `log` attach to the main isolate and to every Node.js worker, current or started later, and the result names the isolate that hit. `--main-only` keeps a command on the main isolate and `--worker-id` selects one worker.","source":{"url":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/CHANGELOG.md#070---2026-07-22","title":"@saptools/cf-inspector changelog, 0.7.0","checked":"2026-10-19","quote":"snapshot, watch, exception, and log now attach to the main isolate plus every current and newly-attached NodeWorker when no explicit isolate selector is passed."}}]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"good","evidence":"1 month since release"},{"label":"Continuity","tier":"fair","evidence":"2 contributors, 1 publisher"},{"label":"Repository","tier":"good","evidence":"pushed 2026-09, not archived"}],"compatibility":[{"label":"Declared for","tier":"unknown","evidence":"no BTP release lines in the atlas"},{"label":"Survived majors","tier":"unknown","evidence":"no BTP release lines in the atlas"},{"label":"Maintainer's CI","tier":"good","evidence":"CodeQL Security Scan green, 2026-09-18"}],"practice":[{"label":"Tests","tier":"good","evidence":"679 test files"},{"label":"Docs","tier":"good","evidence":"docs site, README 34 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":17,"unit":"installs/week"},{"value":3,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-25","latest_version":"0.9.3","majors":{"0.2":{"version":"0.2.0","date":"2026-04-29"},"0.3":{"version":"0.3.0","date":"2026-04-30"},"0.4":{"version":"0.4.0","date":"2026-05-06"},"0.5":{"version":"0.5.0","date":"2026-07-13"},"0.6":{"version":"0.6.0","date":"2026-07-19"},"0.7":{"version":"0.7.0","date":"2026-07-22"},"0.8":{"version":"0.8.0","date":"2026-07-23"},"0.9":{"version":"0.9.0","date":"2026-09-02"}},"license":"MIT","first_release":"2026-04-29","last_release":"2026-09-13","releases":45,"cadence_days":1,"maintainers":1,"repository":"git+https://github.com/dongitran/saptools.git","repository_directory":"packages/cf-inspector","peer_cds":null,"dependencies":3,"node_engine":">=20.0.0","test_script":false,"types":true,"downloads_weekly":17,"downloads_monthly":71,"stars":3,"forks":0,"open_issues":1,"archived":false,"pushed_at":"2026-09-18","license_spdx":null,"org_owned":false,"default_branch":"main","created_at":"2026-04-03T14:04:40Z","open_prs":1,"tree_truncated":false,"test_files":679,"workflows":33,"other_ci":false,"readme_bytes":35006,"docs_files":0,"changelog":false,"license_file":false,"dts_files":2,"first_commit":"2026-04-29","last_commit":"2026-09-13","commits":59,"contributors":2,"ci_status":"success","ci_run_at":"2026-09-18","ci_workflow":"CodeQL Security Scan","ci_event":"push","readme_path":"packages/cf-inspector/README.md","readme_sha":"e5cd62f63009400ee659f27de41e69c06563b2e9","months_since_release":1,"dormant":false,"repo_read":"2026-10-25"},"release_notes":{"license":"MIT","quotable":true,"source":{"kind":"repo","path":"packages/cf-inspector/CHANGELOG.md","ref":"main","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/CHANGELOG.md"},"format":"headings","releases":[{"version":"0.9.3","date":"2026-09-13","date_source":"registry","heading":"0.9.3","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/CHANGELOG.md#093","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"9313ddd7b9959d49"},{"version":"0.9.2","heading":"0.9.2","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/CHANGELOG.md#092","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"cf914631d8502f20"},{"version":"0.9.1","date":"2026-09-02","date_source":"registry","heading":"0.9.1","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/CHANGELOG.md#091","sections":[{"kind":"other","heading":null,"items":1}],"hash":"1b749b47de5b26a7"},{"version":"0.9.0","date":"2026-09-02","date_source":"registry","heading":"0.9.0","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/CHANGELOG.md#090","sections":[{"kind":"other","heading":null,"items":1}],"hash":"04178941989e78f2"},{"version":"0.8.1","date":"2026-07-30","date_source":"heading","heading":"0.8.1 - 2026-07-30","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/CHANGELOG.md#081---2026-07-30","sections":[{"kind":"other","heading":"CDP request reliability","items":1}],"hash":"af97811128e33585"},{"version":"0.8.0","date":"2026-07-23","date_source":"heading","heading":"0.8.0 - 2026-07-23","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/CHANGELOG.md#080---2026-07-23","sections":[{"kind":"fix","heading":"Machine-readable debugger readiness","items":4},{"kind":"other","heading":"Isolate-aware script listing","items":1}],"hash":"148f4498cde4ea35"},{"version":"0.7.1","date":"2026-07-23","date_source":"heading","heading":"0.7.1 - 2026-07-23","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/CHANGELOG.md#071---2026-07-23","sections":[{"kind":"fix","heading":"Exclusive debugger sessions","items":3}],"hash":"388e78249e665684"},{"version":"0.7.0","date":"2026-07-22","date_source":"heading","heading":"0.7.0 - 2026-07-22","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/CHANGELOG.md#070---2026-07-22","sections":[{"kind":"breaking","heading":null,"items":1},{"kind":"other","heading":"Automatic isolate fan-out","items":3},{"kind":"other","heading":"Tunnel and breakpoint reliability","items":3}],"hash":"ba656ea36d5a42f3","cited_by":[{"version":"0.7.0","date":"2026-07-22"}]},{"version":"0.6.2","date":"2026-07-20","date_source":"heading","heading":"0.6.2 - 2026-07-20","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/CHANGELOG.md#062---2026-07-20","sections":[{"kind":"other","heading":null,"items":1}],"hash":"8ce000129de64815"},{"version":"0.6.1","date":"2026-07-20","date_source":"heading","heading":"0.6.1 - 2026-07-20","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/CHANGELOG.md#061---2026-07-20","sections":[{"kind":"other","heading":"Async call stack depth","items":1}],"hash":"f7ffffccf0a81c4f"},{"version":"0.6.0","date":"2026-07-19","date_source":"heading","heading":"0.6.0 - 2026-07-19","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/CHANGELOG.md#060---2026-07-19","sections":[{"kind":"other","heading":"Exact function tracing primitives","items":9}],"hash":"b814d1c30ed426f5"},{"version":"0.5.0","date":"2026-07-13","date_source":"heading","heading":"0.5.0 - 2026-07-13","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-inspector/CHANGELOG.md#050---2026-07-13","sections":[{"kind":"breaking","heading":null,"items":2},{"kind":"other","heading":"Deterministic Cloud Foundry targeting","items":2},{"kind":"other","heading":"Mutation guardrails","items":4},{"kind":"other","heading":"Worker sessions and diagnostics","items":5},{"kind":"other","heading":"Explicit truncation","items":4},{"kind":"other","heading":"Reliability","items":1}],"hash":"df5efbdae536be51","cited_by":[{"version":"0.5.0","date":"2026-07-13"}]}],"versions":[{"version":"0.9.3","date":"2026-09-13"},{"version":"0.9.1","date":"2026-09-02"},{"version":"0.9.0","date":"2026-09-02"},{"version":"0.8.1","date":"2026-07-30"},{"version":"0.8.0","date":"2026-07-23"},{"version":"0.7.1","date":"2026-07-23"},{"version":"0.7.0","date":"2026-07-22"},{"version":"0.6.2","date":"2026-07-20"},{"version":"0.6.1","date":"2026-07-20"},{"version":"0.6.0","date":"2026-07-19"},{"version":"0.5.0","date":"2026-07-13"},{"version":"0.4.12","date":"2026-07-02"},{"version":"0.4.11","date":"2026-07-02"},{"version":"0.4.10","date":"2026-07-01"},{"version":"0.4.8","date":"2026-06-30"},{"version":"0.4.7","date":"2026-06-30"},{"version":"0.4.6","date":"2026-06-30"},{"version":"0.4.5","date":"2026-06-29"},{"version":"0.4.4","date":"2026-06-26"},{"version":"0.4.3","date":"2026-06-24"},{"version":"0.4.2","date":"2026-06-24"},{"version":"0.4.1","date":"2026-05-07"},{"version":"0.4.0","date":"2026-05-06"},{"version":"0.3.19","date":"2026-05-03"},{"version":"0.3.18","date":"2026-05-01"},{"version":"0.3.17","date":"2026-05-01"},{"version":"0.3.16","date":"2026-05-01"},{"version":"0.3.15","date":"2026-05-01"},{"version":"0.3.14","date":"2026-05-01"},{"version":"0.3.13","date":"2026-05-01"},{"version":"0.3.12","date":"2026-04-30"},{"version":"0.3.11","date":"2026-04-30"},{"version":"0.3.9","date":"2026-04-30"},{"version":"0.3.8","date":"2026-04-30"},{"version":"0.3.7","date":"2026-04-30"},{"version":"0.3.6","date":"2026-04-30"},{"version":"0.3.5","date":"2026-04-30"},{"version":"0.3.4","date":"2026-04-30"},{"version":"0.3.3","date":"2026-04-30"},{"version":"0.3.2","date":"2026-04-30"},{"version":"0.3.1","date":"2026-04-30"},{"version":"0.3.0","date":"2026-04-30"},{"version":"0.2.2","date":"2026-04-29"},{"version":"0.2.1","date":"2026-04-29"},{"version":"0.2.0","date":"2026-04-29"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:dong-tran","name":"Đông Trần","json":"/actors/dong-tran.json"}],"contributors":[{"ref":"actor:dong-tran","name":"Đông Trần","json":"/actors/dong-tran.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[{"ref":"artifact:saptools-cf-function-trace","name":"@saptools/cf-function-trace","json":"/artifacts/saptools-cf-function-trace.json","requirement":"required"},{"ref":"artifact:saptools-cf-live-trace","name":"@saptools/cf-live-trace","json":"/artifacts/saptools-cf-live-trace.json","requirement":"required"}],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}