{"ref":"artifact:saptools-cf-function-trace","page":"/artifacts/saptools-cf-function-trace","json":"/artifacts/saptools-cf-function-trace.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"saptools-cf-function-trace","name":"@saptools/cf-function-trace","artifact_type":"cli","ecosystem":"btp","domain":"developer-experience","origin_ring":"independent","description":{"one_line":"Records how one JavaScript function's state changes, step by step, in a [Node.js](external:nodejs) process running locally or on SAP BTP Cloud Foundry, and stores the run as a redacted timeline that can be queried later.","short":"Step-by-step state recorder for one JavaScript function in Node.js","what_it_solves":"Takes one loaded file and one function selector, such as `OrderService.create`, and answers what that function did to its own state on a running service. `record` reads the source V8 has loaded through [@saptools/cf-inspector](artifact:saptools-cf-inspector), arms one breakpoint, steps through the function and stores a full first state followed by JSON Pointer patches under `~/.saptools/cf-function-trace/`, where `show`, `state` and `diff` read it without reconnecting. Sensitive keys, credential-shaped strings and email addresses are redacted before anything is written, and a remote run needs `--confirm-impact` because the [Node.js](external:nodejs) process is paused while state is captured. On [Cloud Foundry](artifact:btp-cloud-foundry-runtime) it never enables SSH or restarts the app. Version 0.2.x traces one activation in one isolate; asynchronous child calls, several workers at once and mapping through source maps are outside it."},"links":{"npm":"https://www.npmjs.com/package/@saptools/cf-function-trace","repo":"https://github.com/dongitran/saptools","docs":"https://github.com/dongitran/saptools/blob/main/packages/cf-function-trace/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-function-trace — README","checked":"2026-10-18","quote":"npm install --global @saptools/cf-function-trace"}]}},"provides":["capability:debugging"],"requires":[{"ref":"artifact:saptools-cf-inspector","for":"Connects to the Node inspector and reads the loaded source through it; the Cloud Foundry tunnel comes from the cf-debugger it resolves in turn.","requirement":"required","sources":[{"url":"https://github.com/dongitran/saptools/blob/main/packages/cf-function-trace/README.md","title":"dongitran/saptools — packages/cf-function-trace/README.md","checked":"2026-10-15","quote":"The published package requires `@saptools/cf-inspector@^0.6.0`, which in turn resolves a compatible `@saptools/cf-debugger`."}]},{"ref":"external:nodejs","for":"Runs on Node.js 20 or newer.","requirement":"required","sources":[{"url":"https://github.com/dongitran/saptools/blob/main/packages/cf-function-trace/README.md","title":"dongitran/saptools — packages/cf-function-trace/README.md","checked":"2026-10-15","quote":"Node.js 20 or newer is required."}]}],"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-10-15"},"maintainers":["actor:dong-tran"],"contributors":["actor:dong-tran"],"drafted_with_ai":true},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"good","evidence":"2 months 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 20 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":10,"unit":"installs/week"},{"value":3,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","latest_version":"0.3.1","majors":{"0.1":{"version":"0.1.0","date":"2026-07-20"},"0.2":{"version":"0.2.0","date":"2026-07-20"},"0.3":{"version":"0.3.0","date":"2026-09-02"}},"license":"MIT","first_release":"2026-07-20","last_release":"2026-09-02","releases":11,"cadence_days":0,"maintainers":1,"repository":"git+https://github.com/dongitran/saptools.git","repository_directory":"packages/cf-function-trace","peer_cds":null,"dependencies":3,"node_engine":">=20.0.0","test_script":false,"types":true,"downloads_weekly":10,"downloads_monthly":47,"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":20957,"docs_files":0,"changelog":false,"license_file":false,"dts_files":2,"first_commit":"2026-07-20","last_commit":"2026-09-02","commits":15,"contributors":2,"ci_status":"success","ci_run_at":"2026-09-18","ci_workflow":"CodeQL Security Scan","ci_event":"push","readme_path":"packages/cf-function-trace/README.md","readme_sha":"b5a988061c6bb51035c4628607c8cb710bc91007","months_since_release":2,"dormant":false,"repo_read":"2026-10-26"},"release_notes":{"license":"MIT","quotable":true,"source":{"kind":"repo","path":"packages/cf-function-trace/CHANGELOG.md","ref":"main","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-function-trace/CHANGELOG.md"},"format":"headings","releases":[{"version":"0.3.1","date":"2026-09-02","date_source":"registry","heading":"0.3.1","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-function-trace/CHANGELOG.md#031","sections":[{"kind":"other","heading":null,"items":1}],"hash":"951df54b053ffd05"},{"version":"0.3.0","date":"2026-09-02","date_source":"registry","heading":"0.3.0","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-function-trace/CHANGELOG.md#030","sections":[{"kind":"other","heading":null,"items":1}],"hash":"86b822f0df098a97"},{"version":"0.2.7","date":"2026-07-21","date_source":"heading","heading":"0.2.7 - 2026-07-21","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-function-trace/CHANGELOG.md#027---2026-07-21","sections":[{"kind":"fix","heading":"Fix","items":1}],"hash":"06bb207ca790f730"},{"version":"0.2.6","date":"2026-07-21","date_source":"heading","heading":"0.2.6 - 2026-07-21","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-function-trace/CHANGELOG.md#026---2026-07-21","sections":[{"kind":"performance","heading":"Performance","items":1}],"hash":"e3e62127374fd4fe"},{"version":"0.2.4","date":"2026-07-21","date_source":"heading","heading":"0.2.4 - 2026-07-21","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-function-trace/CHANGELOG.md#024---2026-07-21","sections":[{"kind":"other","heading":"Diff granularity","items":1}],"hash":"e2cbc2b0e653fb4d"},{"version":"0.2.3","date":"2026-07-21","date_source":"heading","heading":"0.2.3 - 2026-07-21","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-function-trace/CHANGELOG.md#023---2026-07-21","sections":[{"kind":"fix","heading":"Capture and diff correctness","items":4},{"kind":"other","heading":"CLI error contract","items":4},{"kind":"other","heading":"Privacy","items":1},{"kind":"docs","heading":"Documentation","items":1}],"hash":"4178d14a6020fe11"},{"version":"0.2.2","date":"2026-07-21","date_source":"heading","heading":"0.2.2 - 2026-07-21","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-function-trace/CHANGELOG.md#022---2026-07-21","sections":[{"kind":"other","heading":"Reliability","items":1}],"hash":"83e527d54350121c"},{"version":"0.2.1","date":"2026-07-20","date_source":"heading","heading":"0.2.1 - 2026-07-20","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-function-trace/CHANGELOG.md#021---2026-07-20","sections":[{"kind":"other","heading":null,"items":1}],"hash":"96d3e11ae5a41397"},{"version":"0.2.0","date":"2026-07-20","date_source":"heading","heading":"0.2.0 - 2026-07-20","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-function-trace/CHANGELOG.md#020---2026-07-20","sections":[{"kind":"other","heading":"Async function tracing","items":6}],"hash":"a6ce454a7c5a060d"},{"version":"0.1.1","date":"2026-07-20","date_source":"heading","heading":"0.1.1 - 2026-07-20","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-function-trace/CHANGELOG.md#011---2026-07-20","sections":[{"kind":"other","heading":null,"items":4}],"hash":"85cd8cc6ed9b68d9"},{"version":"0.1.0","date":"2026-07-20","date_source":"heading","heading":"0.1.0 - 2026-07-20","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-function-trace/CHANGELOG.md#010---2026-07-20","sections":[{"kind":"other","heading":null,"items":13}],"hash":"3dcee16bb1ed475c"}],"versions":[{"version":"0.3.1","date":"2026-09-02"},{"version":"0.3.0","date":"2026-09-02"},{"version":"0.2.7","date":"2026-07-21"},{"version":"0.2.6","date":"2026-07-21"},{"version":"0.2.4","date":"2026-07-21"},{"version":"0.2.3","date":"2026-07-20"},{"version":"0.2.2","date":"2026-07-20"},{"version":"0.2.1","date":"2026-07-20"},{"version":"0.2.0","date":"2026-07-20"},{"version":"0.1.1","date":"2026-07-20"},{"version":"0.1.0","date":"2026-07-20"}],"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":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}