@xenosystem/agent-sdk 0.10.19 → 0.10.21
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/dist/artifacts/index.cjs +1 -1
- package/dist/artifacts/index.js +1 -1
- package/dist/automation/index.cjs +1 -1
- package/dist/automation/index.js +1 -1
- package/dist/control-plane/index.cjs +1 -1
- package/dist/control-plane/index.js +1 -1
- package/dist/electron/index.cjs +166 -166
- package/dist/electron/index.d.cts +9 -0
- package/dist/electron/index.d.ts +9 -0
- package/dist/electron/index.js +166 -166
- package/dist/electron/metafile-cjs.json +1 -1
- package/dist/electron/metafile-esm.json +1 -1
- package/dist/index.cjs +340 -340
- package/dist/index.d.cts +16 -1
- package/dist/index.d.ts +16 -1
- package/dist/index.js +342 -342
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/providers/index.cjs +10 -10
- package/dist/providers/index.js +10 -10
- package/dist/providers/metafile-cjs.json +1 -1
- package/dist/providers/metafile-esm.json +1 -1
- package/dist/session/index.cjs +1 -1
- package/dist/session/index.js +1 -1
- package/dist/utils/index.cjs +18 -18
- package/dist/utils/index.d.cts +10 -1
- package/dist/utils/index.d.ts +10 -1
- package/dist/utils/index.js +15 -15
- package/dist/utils/metafile-cjs.json +1 -1
- package/dist/utils/metafile-esm.json +1 -1
- package/dist/workforce/index.cjs +1 -1
- package/dist/workforce/index.d.cts +14 -0
- package/dist/workforce/index.d.ts +14 -0
- package/dist/workforce/index.js +1 -1
- package/dist/workforce/metafile-cjs.json +1 -1
- package/dist/workforce/metafile-esm.json +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/config/models.ts":{"bytes":16323,"imports":[],"format":"esm"},"src/core/llm-provider.ts":{"bytes":13791,"imports":[],"format":"esm"},"src/providers/DualLLMProvider.ts":{"bytes":19125,"imports":[{"path":"src/config/models.ts","kind":"import-statement","original":"../config/models.js"},{"path":"src/core/llm-provider.ts","kind":"import-statement","original":"../core/llm-provider.js"}],"format":"esm"},"src/utils/tool-result-content.ts":{"bytes":4820,"imports":[],"format":"esm"},"src/observability/telemetry.ts":{"bytes":7271,"imports":[{"path":"node:perf_hooks","kind":"import-statement","external":true}],"format":"esm"},"src/observability/index.ts":{"bytes":32,"imports":[{"path":"src/observability/telemetry.ts","kind":"import-statement","original":"./telemetry.js"}],"format":"esm"},"src/utils/context-overflow-phrases.ts":{"bytes":2266,"imports":[],"format":"esm"},"src/providers/provider-errors.ts":{"bytes":8749,"imports":[{"path":"src/observability/index.ts","kind":"import-statement","original":"../observability/index.js"},{"path":"src/utils/context-overflow-phrases.ts","kind":"import-statement","original":"../utils/context-overflow-phrases.js"}],"format":"esm"},"src/providers/endpoint-policy.ts":{"bytes":6439,"imports":[{"path":"node:dns/promises","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"}],"format":"esm"},"src/providers/pinned-provider-dispatcher.ts":{"bytes":3986,"imports":[{"path":"node:http","kind":"import-statement","external":true},{"path":"node:https","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:events","kind":"import-statement","external":true},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"}],"format":"esm"},"src/providers/bounded-provider-transport.ts":{"bytes":13579,"imports":[{"path":"node:perf_hooks","kind":"import-statement","external":true},{"path":"src/observability/index.ts","kind":"import-statement","original":"../observability/index.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/pinned-provider-dispatcher.ts","kind":"import-statement","original":"./pinned-provider-dispatcher.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"}],"format":"esm"},"src/utils/json-schema.ts":{"bytes":43478,"imports":[{"path":"node:net","kind":"import-statement","external":true}],"format":"esm"},"src/providers/tool-schema-projection.ts":{"bytes":12249,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/json-schema.ts","kind":"import-statement","original":"../utils/json-schema.js"}],"format":"esm"},"src/utils/acknowledgement.ts":{"bytes":1197,"imports":[],"format":"esm"},"src/providers/quota.ts":{"bytes":9783,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/acknowledgement.ts","kind":"import-statement","original":"../utils/acknowledgement.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"}],"format":"esm"},"src/providers/direct-provider.ts":{"bytes":55136,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/tool-result-content.ts","kind":"import-statement","original":"../utils/tool-result-content.js"},{"path":"src/providers/bounded-provider-transport.ts","kind":"import-statement","original":"./bounded-provider-transport.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"},{"path":"src/providers/tool-schema-projection.ts","kind":"import-statement","original":"./tool-schema-projection.js"},{"path":"src/providers/quota.ts","kind":"import-statement","original":"./quota.js"}],"format":"esm"},"src/utils/text-security.ts":{"bytes":809,"imports":[],"format":"esm"},"src/providers/catalog.ts":{"bytes":24437,"imports":[{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/utils/text-security.ts","kind":"import-statement","original":"../utils/text-security.js"}],"format":"esm"},"src/utils/fs.ts":{"bytes":11685,"imports":[{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"format":"esm"},"src/artifacts/hash.ts":{"bytes":1489,"imports":[{"path":"node:crypto","kind":"import-statement","external":true}],"format":"esm"},"src/control-plane/lock.ts":{"bytes":2496,"imports":[{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:os","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"format":"esm"},"src/providers/file-connection-store.ts":{"bytes":8338,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"src/utils/fs.ts","kind":"import-statement","original":"../utils/fs.js"},{"path":"src/artifacts/hash.ts","kind":"import-statement","original":"../artifacts/hash.js"},{"path":"src/control-plane/lock.ts","kind":"import-statement","original":"../control-plane/lock.js"},{"path":"src/providers/catalog.ts","kind":"import-statement","original":"./catalog.js"}],"format":"esm"},"src/providers/quota-store.ts":{"bytes":15760,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"src/artifacts/hash.ts","kind":"import-statement","original":"../artifacts/hash.js"},{"path":"src/providers/quota.ts","kind":"import-statement","original":"./quota.js"}],"format":"esm"},"src/providers/index.ts":{"bytes":1627,"imports":[{"path":"src/providers/DualLLMProvider.ts","kind":"import-statement","original":"./DualLLMProvider.js"},{"path":"src/providers/direct-provider.ts","kind":"import-statement","original":"./direct-provider.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/tool-schema-projection.ts","kind":"import-statement","original":"./tool-schema-projection.js"},{"path":"src/providers/catalog.ts","kind":"import-statement","original":"./catalog.js"},{"path":"src/providers/file-connection-store.ts","kind":"import-statement","original":"./file-connection-store.js"},{"path":"src/providers/quota.ts","kind":"import-statement","original":"./quota.js"},{"path":"src/providers/quota-store.ts","kind":"import-statement","original":"./quota-store.js"}],"format":"esm"}},"outputs":{"dist/providers/index.cjs":{"imports":[{"path":"node:crypto","kind":"require-call","external":true},{"path":"node:perf_hooks","kind":"require-call","external":true},{"path":"node:dns/promises","kind":"require-call","external":true},{"path":"node:net","kind":"require-call","external":true},{"path":"node:http","kind":"require-call","external":true},{"path":"node:https","kind":"require-call","external":true},{"path":"node:net","kind":"require-call","external":true},{"path":"node:events","kind":"require-call","external":true},{"path":"node:crypto","kind":"require-call","external":true},{"path":"node:net","kind":"require-call","external":true},{"path":"node:crypto","kind":"require-call","external":true},{"path":"node:crypto","kind":"require-call","external":true},{"path":"node:fs/promises","kind":"require-call","external":true},{"path":"node:path","kind":"require-call","external":true},{"path":"node:fs/promises","kind":"require-call","external":true},{"path":"node:fs","kind":"require-call","external":true},{"path":"node:os","kind":"require-call","external":true},{"path":"node:path","kind":"require-call","external":true},{"path":"node:crypto","kind":"require-call","external":true},{"path":"node:fs/promises","kind":"require-call","external":true},{"path":"node:path","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/providers/index.ts","inputs":{"src/providers/index.ts":{"bytesInOutput":976},"src/config/models.ts":{"bytesInOutput":50},"src/core/llm-provider.ts":{"bytesInOutput":1142},"src/providers/DualLLMProvider.ts":{"bytesInOutput":5733},"src/providers/direct-provider.ts":{"bytesInOutput":25786},"src/utils/tool-result-content.ts":{"bytesInOutput":436},"src/providers/bounded-provider-transport.ts":{"bytesInOutput":6200},"src/observability/telemetry.ts":{"bytesInOutput":1600},"src/observability/index.ts":{"bytesInOutput":0},"src/providers/endpoint-policy.ts":{"bytesInOutput":3343},"src/utils/context-overflow-phrases.ts":{"bytesInOutput":169},"src/providers/provider-errors.ts":{"bytesInOutput":3248},"src/providers/pinned-provider-dispatcher.ts":{"bytesInOutput":1519},"src/providers/tool-schema-projection.ts":{"bytesInOutput":5711},"src/utils/json-schema.ts":{"bytesInOutput":19790},"src/providers/quota.ts":{"bytesInOutput":3435},"src/utils/acknowledgement.ts":{"bytesInOutput":470},"src/utils/text-security.ts":{"bytesInOutput":180},"src/providers/catalog.ts":{"bytesInOutput":11924},"src/providers/file-connection-store.ts":{"bytesInOutput":3784},"src/utils/fs.ts":{"bytesInOutput":319},"src/artifacts/hash.ts":{"bytesInOutput":564},"src/control-plane/lock.ts":{"bytesInOutput":1067},"src/providers/quota-store.ts":{"bytesInOutput":8105}},"bytes":106893}}}
|
|
1
|
+
{"inputs":{"src/utils/request-context.ts":{"bytes":3679,"imports":[],"format":"esm"},"src/config/models.ts":{"bytes":17947,"imports":[{"path":"src/utils/request-context.ts","kind":"import-statement","original":"../utils/request-context.js"}],"format":"esm"},"src/core/llm-provider.ts":{"bytes":13791,"imports":[],"format":"esm"},"src/providers/DualLLMProvider.ts":{"bytes":19125,"imports":[{"path":"src/config/models.ts","kind":"import-statement","original":"../config/models.js"},{"path":"src/core/llm-provider.ts","kind":"import-statement","original":"../core/llm-provider.js"}],"format":"esm"},"src/utils/tool-result-content.ts":{"bytes":4820,"imports":[],"format":"esm"},"src/observability/telemetry.ts":{"bytes":7271,"imports":[{"path":"node:perf_hooks","kind":"import-statement","external":true}],"format":"esm"},"src/observability/index.ts":{"bytes":32,"imports":[{"path":"src/observability/telemetry.ts","kind":"import-statement","original":"./telemetry.js"}],"format":"esm"},"src/utils/context-overflow-phrases.ts":{"bytes":2266,"imports":[],"format":"esm"},"src/providers/provider-errors.ts":{"bytes":8749,"imports":[{"path":"src/observability/index.ts","kind":"import-statement","original":"../observability/index.js"},{"path":"src/utils/context-overflow-phrases.ts","kind":"import-statement","original":"../utils/context-overflow-phrases.js"}],"format":"esm"},"src/providers/endpoint-policy.ts":{"bytes":6439,"imports":[{"path":"node:dns/promises","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"}],"format":"esm"},"src/providers/pinned-provider-dispatcher.ts":{"bytes":3986,"imports":[{"path":"node:http","kind":"import-statement","external":true},{"path":"node:https","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:events","kind":"import-statement","external":true},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"}],"format":"esm"},"src/providers/bounded-provider-transport.ts":{"bytes":13579,"imports":[{"path":"node:perf_hooks","kind":"import-statement","external":true},{"path":"src/observability/index.ts","kind":"import-statement","original":"../observability/index.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/pinned-provider-dispatcher.ts","kind":"import-statement","original":"./pinned-provider-dispatcher.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"}],"format":"esm"},"src/utils/json-schema.ts":{"bytes":43478,"imports":[{"path":"node:net","kind":"import-statement","external":true}],"format":"esm"},"src/providers/tool-schema-projection.ts":{"bytes":12249,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/json-schema.ts","kind":"import-statement","original":"../utils/json-schema.js"}],"format":"esm"},"src/utils/acknowledgement.ts":{"bytes":1197,"imports":[],"format":"esm"},"src/providers/quota.ts":{"bytes":9783,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/acknowledgement.ts","kind":"import-statement","original":"../utils/acknowledgement.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"}],"format":"esm"},"src/providers/direct-provider.ts":{"bytes":55136,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/tool-result-content.ts","kind":"import-statement","original":"../utils/tool-result-content.js"},{"path":"src/providers/bounded-provider-transport.ts","kind":"import-statement","original":"./bounded-provider-transport.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"},{"path":"src/providers/tool-schema-projection.ts","kind":"import-statement","original":"./tool-schema-projection.js"},{"path":"src/providers/quota.ts","kind":"import-statement","original":"./quota.js"}],"format":"esm"},"src/utils/text-security.ts":{"bytes":809,"imports":[],"format":"esm"},"src/providers/catalog.ts":{"bytes":24437,"imports":[{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/utils/text-security.ts","kind":"import-statement","original":"../utils/text-security.js"}],"format":"esm"},"src/utils/fs.ts":{"bytes":11685,"imports":[{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"format":"esm"},"src/artifacts/hash.ts":{"bytes":1489,"imports":[{"path":"node:crypto","kind":"import-statement","external":true}],"format":"esm"},"src/control-plane/lock.ts":{"bytes":2496,"imports":[{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:os","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"format":"esm"},"src/providers/file-connection-store.ts":{"bytes":8338,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"src/utils/fs.ts","kind":"import-statement","original":"../utils/fs.js"},{"path":"src/artifacts/hash.ts","kind":"import-statement","original":"../artifacts/hash.js"},{"path":"src/control-plane/lock.ts","kind":"import-statement","original":"../control-plane/lock.js"},{"path":"src/providers/catalog.ts","kind":"import-statement","original":"./catalog.js"}],"format":"esm"},"src/providers/quota-store.ts":{"bytes":15760,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"src/artifacts/hash.ts","kind":"import-statement","original":"../artifacts/hash.js"},{"path":"src/providers/quota.ts","kind":"import-statement","original":"./quota.js"}],"format":"esm"},"src/providers/index.ts":{"bytes":1627,"imports":[{"path":"src/providers/DualLLMProvider.ts","kind":"import-statement","original":"./DualLLMProvider.js"},{"path":"src/providers/direct-provider.ts","kind":"import-statement","original":"./direct-provider.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/tool-schema-projection.ts","kind":"import-statement","original":"./tool-schema-projection.js"},{"path":"src/providers/catalog.ts","kind":"import-statement","original":"./catalog.js"},{"path":"src/providers/file-connection-store.ts","kind":"import-statement","original":"./file-connection-store.js"},{"path":"src/providers/quota.ts","kind":"import-statement","original":"./quota.js"},{"path":"src/providers/quota-store.ts","kind":"import-statement","original":"./quota-store.js"}],"format":"esm"}},"outputs":{"dist/providers/index.cjs":{"imports":[{"path":"node:crypto","kind":"require-call","external":true},{"path":"node:perf_hooks","kind":"require-call","external":true},{"path":"node:dns/promises","kind":"require-call","external":true},{"path":"node:net","kind":"require-call","external":true},{"path":"node:http","kind":"require-call","external":true},{"path":"node:https","kind":"require-call","external":true},{"path":"node:net","kind":"require-call","external":true},{"path":"node:events","kind":"require-call","external":true},{"path":"node:crypto","kind":"require-call","external":true},{"path":"node:net","kind":"require-call","external":true},{"path":"node:crypto","kind":"require-call","external":true},{"path":"node:crypto","kind":"require-call","external":true},{"path":"node:fs/promises","kind":"require-call","external":true},{"path":"node:path","kind":"require-call","external":true},{"path":"node:fs/promises","kind":"require-call","external":true},{"path":"node:fs","kind":"require-call","external":true},{"path":"node:os","kind":"require-call","external":true},{"path":"node:path","kind":"require-call","external":true},{"path":"node:crypto","kind":"require-call","external":true},{"path":"node:fs/promises","kind":"require-call","external":true},{"path":"node:path","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/providers/index.ts","inputs":{"src/providers/index.ts":{"bytesInOutput":976},"src/config/models.ts":{"bytesInOutput":56},"src/core/llm-provider.ts":{"bytesInOutput":1142},"src/providers/DualLLMProvider.ts":{"bytesInOutput":5739},"src/providers/direct-provider.ts":{"bytesInOutput":25786},"src/utils/tool-result-content.ts":{"bytesInOutput":436},"src/providers/bounded-provider-transport.ts":{"bytesInOutput":6200},"src/observability/telemetry.ts":{"bytesInOutput":1600},"src/observability/index.ts":{"bytesInOutput":0},"src/providers/endpoint-policy.ts":{"bytesInOutput":3343},"src/utils/context-overflow-phrases.ts":{"bytesInOutput":169},"src/providers/provider-errors.ts":{"bytesInOutput":3248},"src/providers/pinned-provider-dispatcher.ts":{"bytesInOutput":1519},"src/providers/tool-schema-projection.ts":{"bytesInOutput":5711},"src/utils/json-schema.ts":{"bytesInOutput":19790},"src/providers/quota.ts":{"bytesInOutput":3435},"src/utils/acknowledgement.ts":{"bytesInOutput":470},"src/utils/text-security.ts":{"bytesInOutput":180},"src/providers/catalog.ts":{"bytesInOutput":11924},"src/providers/file-connection-store.ts":{"bytesInOutput":3784},"src/utils/fs.ts":{"bytesInOutput":319},"src/artifacts/hash.ts":{"bytesInOutput":564},"src/control-plane/lock.ts":{"bytesInOutput":1067},"src/providers/quota-store.ts":{"bytesInOutput":8105}},"bytes":106905}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/config/models.ts":{"bytes":16323,"imports":[],"format":"esm"},"src/core/llm-provider.ts":{"bytes":13791,"imports":[],"format":"esm"},"src/providers/DualLLMProvider.ts":{"bytes":19125,"imports":[{"path":"src/config/models.ts","kind":"import-statement","original":"../config/models.js"},{"path":"src/core/llm-provider.ts","kind":"import-statement","original":"../core/llm-provider.js"}],"format":"esm"},"src/utils/tool-result-content.ts":{"bytes":4820,"imports":[],"format":"esm"},"src/observability/telemetry.ts":{"bytes":7271,"imports":[{"path":"node:perf_hooks","kind":"import-statement","external":true}],"format":"esm"},"src/observability/index.ts":{"bytes":32,"imports":[{"path":"src/observability/telemetry.ts","kind":"import-statement","original":"./telemetry.js"}],"format":"esm"},"src/utils/context-overflow-phrases.ts":{"bytes":2266,"imports":[],"format":"esm"},"src/providers/provider-errors.ts":{"bytes":8749,"imports":[{"path":"src/observability/index.ts","kind":"import-statement","original":"../observability/index.js"},{"path":"src/utils/context-overflow-phrases.ts","kind":"import-statement","original":"../utils/context-overflow-phrases.js"}],"format":"esm"},"src/providers/endpoint-policy.ts":{"bytes":6439,"imports":[{"path":"node:dns/promises","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"}],"format":"esm"},"src/providers/pinned-provider-dispatcher.ts":{"bytes":3986,"imports":[{"path":"node:http","kind":"import-statement","external":true},{"path":"node:https","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:events","kind":"import-statement","external":true},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"}],"format":"esm"},"src/providers/bounded-provider-transport.ts":{"bytes":13579,"imports":[{"path":"node:perf_hooks","kind":"import-statement","external":true},{"path":"src/observability/index.ts","kind":"import-statement","original":"../observability/index.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/pinned-provider-dispatcher.ts","kind":"import-statement","original":"./pinned-provider-dispatcher.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"}],"format":"esm"},"src/utils/json-schema.ts":{"bytes":43478,"imports":[{"path":"node:net","kind":"import-statement","external":true}],"format":"esm"},"src/providers/tool-schema-projection.ts":{"bytes":12249,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/json-schema.ts","kind":"import-statement","original":"../utils/json-schema.js"}],"format":"esm"},"src/utils/acknowledgement.ts":{"bytes":1197,"imports":[],"format":"esm"},"src/providers/quota.ts":{"bytes":9783,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/acknowledgement.ts","kind":"import-statement","original":"../utils/acknowledgement.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"}],"format":"esm"},"src/providers/direct-provider.ts":{"bytes":55136,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/tool-result-content.ts","kind":"import-statement","original":"../utils/tool-result-content.js"},{"path":"src/providers/bounded-provider-transport.ts","kind":"import-statement","original":"./bounded-provider-transport.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"},{"path":"src/providers/tool-schema-projection.ts","kind":"import-statement","original":"./tool-schema-projection.js"},{"path":"src/providers/quota.ts","kind":"import-statement","original":"./quota.js"}],"format":"esm"},"src/utils/text-security.ts":{"bytes":809,"imports":[],"format":"esm"},"src/providers/catalog.ts":{"bytes":24437,"imports":[{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/utils/text-security.ts","kind":"import-statement","original":"../utils/text-security.js"}],"format":"esm"},"src/utils/fs.ts":{"bytes":11685,"imports":[{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"format":"esm"},"src/artifacts/hash.ts":{"bytes":1489,"imports":[{"path":"node:crypto","kind":"import-statement","external":true}],"format":"esm"},"src/control-plane/lock.ts":{"bytes":2496,"imports":[{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:os","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"format":"esm"},"src/providers/file-connection-store.ts":{"bytes":8338,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"src/utils/fs.ts","kind":"import-statement","original":"../utils/fs.js"},{"path":"src/artifacts/hash.ts","kind":"import-statement","original":"../artifacts/hash.js"},{"path":"src/control-plane/lock.ts","kind":"import-statement","original":"../control-plane/lock.js"},{"path":"src/providers/catalog.ts","kind":"import-statement","original":"./catalog.js"}],"format":"esm"},"src/providers/quota-store.ts":{"bytes":15760,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"src/artifacts/hash.ts","kind":"import-statement","original":"../artifacts/hash.js"},{"path":"src/providers/quota.ts","kind":"import-statement","original":"./quota.js"}],"format":"esm"},"src/providers/index.ts":{"bytes":1627,"imports":[{"path":"src/providers/DualLLMProvider.ts","kind":"import-statement","original":"./DualLLMProvider.js"},{"path":"src/providers/direct-provider.ts","kind":"import-statement","original":"./direct-provider.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/tool-schema-projection.ts","kind":"import-statement","original":"./tool-schema-projection.js"},{"path":"src/providers/catalog.ts","kind":"import-statement","original":"./catalog.js"},{"path":"src/providers/file-connection-store.ts","kind":"import-statement","original":"./file-connection-store.js"},{"path":"src/providers/quota.ts","kind":"import-statement","original":"./quota.js"},{"path":"src/providers/quota-store.ts","kind":"import-statement","original":"./quota-store.js"}],"format":"esm"}},"outputs":{"dist/providers/index.js":{"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:perf_hooks","kind":"import-statement","external":true},{"path":"node:dns/promises","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:http","kind":"import-statement","external":true},{"path":"node:https","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:events","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:os","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"exports":["BUILT_IN_XENO_PROVIDER_PRESETS","DualLLMProvider","FileQuotaAuthority","FileXenoProviderConnectionStore","ProviderError","QuotaAcknowledgementError","QuotaError","ToolSchemaProjectionError","XENO_PROVIDER_CATALOG_SCHEMA_VERSION","XENO_PROVIDER_CONNECTION_STORE_SCHEMA_VERSION","XenoProviderCatalog","assertDirectEndpointResolution","classifyProviderHttpError","createDirectProvider","createOllamaNativeProvider","createQuotaGovernedProvider","directProviderConfigFromConnection","isQuotaControlError","normalizeQuotaScope","parseRetryAfter","probeXenoProvider","projectToolDefinitionsForProvider","projectToolSchemaForProvider","providerCapabilityError","providerProtocolError","quotaAncestors","quotaInteger","quotaScopeKey","quotaText","selectXenoProviderRoute","validateDirectEndpoint"],"entryPoint":"src/providers/index.ts","inputs":{"src/config/models.ts":{"bytesInOutput":50},"src/core/llm-provider.ts":{"bytesInOutput":1142},"src/providers/DualLLMProvider.ts":{"bytesInOutput":5733},"src/providers/index.ts":{"bytesInOutput":0},"src/providers/direct-provider.ts":{"bytesInOutput":25751},"src/utils/tool-result-content.ts":{"bytesInOutput":436},"src/providers/bounded-provider-transport.ts":{"bytesInOutput":6174},"src/observability/telemetry.ts":{"bytesInOutput":1599},"src/observability/index.ts":{"bytesInOutput":0},"src/providers/endpoint-policy.ts":{"bytesInOutput":3316},"src/utils/context-overflow-phrases.ts":{"bytesInOutput":169},"src/providers/provider-errors.ts":{"bytesInOutput":3247},"src/providers/pinned-provider-dispatcher.ts":{"bytesInOutput":1519},"src/providers/tool-schema-projection.ts":{"bytesInOutput":5709},"src/utils/json-schema.ts":{"bytesInOutput":19782},"src/providers/quota.ts":{"bytesInOutput":3412},"src/utils/acknowledgement.ts":{"bytesInOutput":470},"src/utils/text-security.ts":{"bytesInOutput":180},"src/providers/catalog.ts":{"bytesInOutput":11924},"src/providers/file-connection-store.ts":{"bytesInOutput":3774},"src/utils/fs.ts":{"bytesInOutput":314},"src/artifacts/hash.ts":{"bytesInOutput":564},"src/control-plane/lock.ts":{"bytesInOutput":1054},"src/providers/quota-store.ts":{"bytesInOutput":8082}},"bytes":105314}}}
|
|
1
|
+
{"inputs":{"src/utils/request-context.ts":{"bytes":3679,"imports":[],"format":"esm"},"src/config/models.ts":{"bytes":17947,"imports":[{"path":"src/utils/request-context.ts","kind":"import-statement","original":"../utils/request-context.js"}],"format":"esm"},"src/core/llm-provider.ts":{"bytes":13791,"imports":[],"format":"esm"},"src/providers/DualLLMProvider.ts":{"bytes":19125,"imports":[{"path":"src/config/models.ts","kind":"import-statement","original":"../config/models.js"},{"path":"src/core/llm-provider.ts","kind":"import-statement","original":"../core/llm-provider.js"}],"format":"esm"},"src/utils/tool-result-content.ts":{"bytes":4820,"imports":[],"format":"esm"},"src/observability/telemetry.ts":{"bytes":7271,"imports":[{"path":"node:perf_hooks","kind":"import-statement","external":true}],"format":"esm"},"src/observability/index.ts":{"bytes":32,"imports":[{"path":"src/observability/telemetry.ts","kind":"import-statement","original":"./telemetry.js"}],"format":"esm"},"src/utils/context-overflow-phrases.ts":{"bytes":2266,"imports":[],"format":"esm"},"src/providers/provider-errors.ts":{"bytes":8749,"imports":[{"path":"src/observability/index.ts","kind":"import-statement","original":"../observability/index.js"},{"path":"src/utils/context-overflow-phrases.ts","kind":"import-statement","original":"../utils/context-overflow-phrases.js"}],"format":"esm"},"src/providers/endpoint-policy.ts":{"bytes":6439,"imports":[{"path":"node:dns/promises","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"}],"format":"esm"},"src/providers/pinned-provider-dispatcher.ts":{"bytes":3986,"imports":[{"path":"node:http","kind":"import-statement","external":true},{"path":"node:https","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:events","kind":"import-statement","external":true},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"}],"format":"esm"},"src/providers/bounded-provider-transport.ts":{"bytes":13579,"imports":[{"path":"node:perf_hooks","kind":"import-statement","external":true},{"path":"src/observability/index.ts","kind":"import-statement","original":"../observability/index.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/pinned-provider-dispatcher.ts","kind":"import-statement","original":"./pinned-provider-dispatcher.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"}],"format":"esm"},"src/utils/json-schema.ts":{"bytes":43478,"imports":[{"path":"node:net","kind":"import-statement","external":true}],"format":"esm"},"src/providers/tool-schema-projection.ts":{"bytes":12249,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/json-schema.ts","kind":"import-statement","original":"../utils/json-schema.js"}],"format":"esm"},"src/utils/acknowledgement.ts":{"bytes":1197,"imports":[],"format":"esm"},"src/providers/quota.ts":{"bytes":9783,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/acknowledgement.ts","kind":"import-statement","original":"../utils/acknowledgement.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"}],"format":"esm"},"src/providers/direct-provider.ts":{"bytes":55136,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/tool-result-content.ts","kind":"import-statement","original":"../utils/tool-result-content.js"},{"path":"src/providers/bounded-provider-transport.ts","kind":"import-statement","original":"./bounded-provider-transport.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"},{"path":"src/providers/tool-schema-projection.ts","kind":"import-statement","original":"./tool-schema-projection.js"},{"path":"src/providers/quota.ts","kind":"import-statement","original":"./quota.js"}],"format":"esm"},"src/utils/text-security.ts":{"bytes":809,"imports":[],"format":"esm"},"src/providers/catalog.ts":{"bytes":24437,"imports":[{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/utils/text-security.ts","kind":"import-statement","original":"../utils/text-security.js"}],"format":"esm"},"src/utils/fs.ts":{"bytes":11685,"imports":[{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"format":"esm"},"src/artifacts/hash.ts":{"bytes":1489,"imports":[{"path":"node:crypto","kind":"import-statement","external":true}],"format":"esm"},"src/control-plane/lock.ts":{"bytes":2496,"imports":[{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:os","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"format":"esm"},"src/providers/file-connection-store.ts":{"bytes":8338,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"src/utils/fs.ts","kind":"import-statement","original":"../utils/fs.js"},{"path":"src/artifacts/hash.ts","kind":"import-statement","original":"../artifacts/hash.js"},{"path":"src/control-plane/lock.ts","kind":"import-statement","original":"../control-plane/lock.js"},{"path":"src/providers/catalog.ts","kind":"import-statement","original":"./catalog.js"}],"format":"esm"},"src/providers/quota-store.ts":{"bytes":15760,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"src/artifacts/hash.ts","kind":"import-statement","original":"../artifacts/hash.js"},{"path":"src/providers/quota.ts","kind":"import-statement","original":"./quota.js"}],"format":"esm"},"src/providers/index.ts":{"bytes":1627,"imports":[{"path":"src/providers/DualLLMProvider.ts","kind":"import-statement","original":"./DualLLMProvider.js"},{"path":"src/providers/direct-provider.ts","kind":"import-statement","original":"./direct-provider.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/tool-schema-projection.ts","kind":"import-statement","original":"./tool-schema-projection.js"},{"path":"src/providers/catalog.ts","kind":"import-statement","original":"./catalog.js"},{"path":"src/providers/file-connection-store.ts","kind":"import-statement","original":"./file-connection-store.js"},{"path":"src/providers/quota.ts","kind":"import-statement","original":"./quota.js"},{"path":"src/providers/quota-store.ts","kind":"import-statement","original":"./quota-store.js"}],"format":"esm"}},"outputs":{"dist/providers/index.js":{"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:perf_hooks","kind":"import-statement","external":true},{"path":"node:dns/promises","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:http","kind":"import-statement","external":true},{"path":"node:https","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:events","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:os","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"exports":["BUILT_IN_XENO_PROVIDER_PRESETS","DualLLMProvider","FileQuotaAuthority","FileXenoProviderConnectionStore","ProviderError","QuotaAcknowledgementError","QuotaError","ToolSchemaProjectionError","XENO_PROVIDER_CATALOG_SCHEMA_VERSION","XENO_PROVIDER_CONNECTION_STORE_SCHEMA_VERSION","XenoProviderCatalog","assertDirectEndpointResolution","classifyProviderHttpError","createDirectProvider","createOllamaNativeProvider","createQuotaGovernedProvider","directProviderConfigFromConnection","isQuotaControlError","normalizeQuotaScope","parseRetryAfter","probeXenoProvider","projectToolDefinitionsForProvider","projectToolSchemaForProvider","providerCapabilityError","providerProtocolError","quotaAncestors","quotaInteger","quotaScopeKey","quotaText","selectXenoProviderRoute","validateDirectEndpoint"],"entryPoint":"src/providers/index.ts","inputs":{"src/config/models.ts":{"bytesInOutput":56},"src/core/llm-provider.ts":{"bytesInOutput":1142},"src/providers/DualLLMProvider.ts":{"bytesInOutput":5739},"src/providers/index.ts":{"bytesInOutput":0},"src/providers/direct-provider.ts":{"bytesInOutput":25751},"src/utils/tool-result-content.ts":{"bytesInOutput":436},"src/providers/bounded-provider-transport.ts":{"bytesInOutput":6174},"src/observability/telemetry.ts":{"bytesInOutput":1599},"src/observability/index.ts":{"bytesInOutput":0},"src/providers/endpoint-policy.ts":{"bytesInOutput":3316},"src/utils/context-overflow-phrases.ts":{"bytesInOutput":169},"src/providers/provider-errors.ts":{"bytesInOutput":3247},"src/providers/pinned-provider-dispatcher.ts":{"bytesInOutput":1519},"src/providers/tool-schema-projection.ts":{"bytesInOutput":5709},"src/utils/json-schema.ts":{"bytesInOutput":19782},"src/providers/quota.ts":{"bytesInOutput":3412},"src/utils/acknowledgement.ts":{"bytesInOutput":470},"src/utils/text-security.ts":{"bytesInOutput":180},"src/providers/catalog.ts":{"bytesInOutput":11924},"src/providers/file-connection-store.ts":{"bytesInOutput":3774},"src/utils/fs.ts":{"bytesInOutput":314},"src/artifacts/hash.ts":{"bytesInOutput":564},"src/control-plane/lock.ts":{"bytesInOutput":1054},"src/providers/quota-store.ts":{"bytesInOutput":8082}},"bytes":105326}}}
|
package/dist/session/index.cjs
CHANGED
|
@@ -48,7 +48,7 @@ ${this.stringify(e.data)}
|
|
|
48
48
|
`)+`
|
|
49
49
|
`;await k(this.transcriptPath,a);let l=this.buildMarkdownDocument(o,"session store");if(await k(this.markdownPath,l),!this.workspaceMirrorDisabled){let c=await this.resolveWorkspaceMarkdownPath();if(c)try{let u=this.buildMarkdownDocument(o,"workspace mirror");await k(c,u)}catch(u){this.workspaceMirrorDisabled=!0,B("Transcript workspace mirror disabled",u)}}}async truncateAfterMessageCount(e){let t=await x(this.transcriptPath);if(!t)return;let r=Z(t),s=Math.max(0,e),i=0,o=[];for(let c of r){if(c.type==="user_message"||c.type==="assistant_message"){if(i>=s)break;i+=1}o.push(c)}let a=o.length>0?o.map(c=>JSON.stringify(c)).join(`
|
|
50
50
|
`)+`
|
|
51
|
-
`:"";await k(this.transcriptPath,a);let l=this.buildMarkdownDocument(o,"session store");if(await k(this.markdownPath,l),!this.workspaceMirrorDisabled){let c=await this.resolveWorkspaceMarkdownPath();if(c)try{let u=this.buildMarkdownDocument(o,"workspace mirror");await k(c,u)}catch(u){this.workspaceMirrorDisabled=!0,B("Transcript workspace mirror disabled",u)}}}getSequence(){return this.sequence}async initialize(){try{let e=await x(this.transcriptPath);if(!e){this.sequence=0;return}let t=Z(e);if(t.length===0){this.sequence=0;return}let r=t[t.length-1];this.sequence=r.sequence+1}catch(e){let t=e instanceof Error?e.message:String(e);B(`Transcript initialization warning: ${t}. Starting with empty transcript.`),this.sequence=0}}async flush(){await this.writeQueue}};var ee=_(require("path"),1),lt=require("crypto"),ut=require("fs/promises");var qt={View:"Read",Replace:"Write",GlobTool:"Glob",GrepTool:"Grep",SQLiteAnalyze:"SqliteAnalyze",ReadNotebook:"NotebookRead",NotebookEditCell:"NotebookEdit",CoordinationSend:"Send",CoordinationQuery:"Receive"};function me(n){return qt[n]??n}var I=class{sessionDir;checkpointsDir;autoInterval;lastCheckpointMessageCount=0;constructor(e,t){this.sessionDir=e,this.checkpointsDir=ee.join(e,"checkpoints"),this.autoInterval=t?.autoInterval??10}async initialize(){let e=await this.list();e.length>0&&(this.lastCheckpointMessageCount=e[0].messageCount)}async create(e){await N(this.checkpointsDir);let t=(0,lt.randomUUID)(),r={id:t,name:e.description,trigger:e.trigger,createdAt:new Date().toISOString(),messageCount:e.messages.length,tokenCount:this.estimateTokens(e.messages)},s={info:r,messages:e.messages},i=ee.join(this.checkpointsDir,`${t}.json`);return await k(i,JSON.stringify(s,null,2)),this.lastCheckpointMessageCount=e.messages.length,r}async list(){let e=await Ze(this.checkpointsDir,/\.json$/),t=[];for(let r of e){let s=await x(r);if(s){let i=E(s,null);if(i){let o=await(0,ut.stat)(r);t.push({info:i.info,modifiedAtMs:o.mtimeMs})}}}return t.sort((r,s)=>new Date(s.info.createdAt).getTime()-new Date(r.info.createdAt).getTime()||s.modifiedAtMs-r.modifiedAtMs).map(({info:r})=>r)}async restore(e){let t=ee.join(this.checkpointsDir,`${e}.json`),r;try{r=await x(t)}catch(i){let o=i instanceof Error?i.message:String(i);throw new Error(`Failed to read checkpoint ${e}: ${o}`)}if(!r)throw new Error(`Checkpoint not found: ${e} (path: ${t})`);let s=E(r,null);if(!s)throw new Error(`Invalid checkpoint data for ${e}: JSON parse failed`);if(!s.messages||!Array.isArray(s.messages))throw new Error(`Invalid checkpoint data for ${e}: missing or invalid messages array`);if(!s.info)throw new Error(`Invalid checkpoint data for ${e}: missing info object`);return{messages:s.messages,info:s.info}}shouldAutoCheckpoint(e){return e-this.lastCheckpointMessageCount>=this.autoInterval}static isDangerousOperation(e,t){if(e=me(e),e==="Write")return!0;if(e==="Bash"){let s=t.command?.toLowerCase()||"";return["rm ","del ","git push","git reset","drop ","truncate"].some(o=>s.includes(o))}return!1}async delete(e){let t=ee.join(this.checkpointsDir,`${e}.json`);await $(t)}estimateTokens(e){let t=0;for(let r of e)if(typeof r.content=="string")t+=Math.ceil(r.content.length/4);else if(Array.isArray(r.content))for(let s of r.content)"text"in s&&(t+=Math.ceil(s.text.length/4));return t}};var j=_(require("path"),1),$e=_(require("os"),1),F=_(require("fs"),1);var Jt=Symbol.for("@xenosystem/agent-sdk/shutdown-registry"),Vt=globalThis,Oe=Vt[Jt]??={cleanups:new Set,exitHandlerRegistered:!1,signalHandlersInstalled:!1},Ne=Oe.cleanups;function zt(){for(let n of Ne)try{n()}catch{}}function dt(n){return Ne.add(n),!Oe.exitHandlerRegistered&&typeof process<"u"&&typeof process.on=="function"&&(Oe.exitHandlerRegistered=!0,process.on("exit",zt)),()=>{Ne.delete(n)}}var pt="0.10.
|
|
51
|
+
`:"";await k(this.transcriptPath,a);let l=this.buildMarkdownDocument(o,"session store");if(await k(this.markdownPath,l),!this.workspaceMirrorDisabled){let c=await this.resolveWorkspaceMarkdownPath();if(c)try{let u=this.buildMarkdownDocument(o,"workspace mirror");await k(c,u)}catch(u){this.workspaceMirrorDisabled=!0,B("Transcript workspace mirror disabled",u)}}}getSequence(){return this.sequence}async initialize(){try{let e=await x(this.transcriptPath);if(!e){this.sequence=0;return}let t=Z(e);if(t.length===0){this.sequence=0;return}let r=t[t.length-1];this.sequence=r.sequence+1}catch(e){let t=e instanceof Error?e.message:String(e);B(`Transcript initialization warning: ${t}. Starting with empty transcript.`),this.sequence=0}}async flush(){await this.writeQueue}};var ee=_(require("path"),1),lt=require("crypto"),ut=require("fs/promises");var qt={View:"Read",Replace:"Write",GlobTool:"Glob",GrepTool:"Grep",SQLiteAnalyze:"SqliteAnalyze",ReadNotebook:"NotebookRead",NotebookEditCell:"NotebookEdit",CoordinationSend:"Send",CoordinationQuery:"Receive"};function me(n){return qt[n]??n}var I=class{sessionDir;checkpointsDir;autoInterval;lastCheckpointMessageCount=0;constructor(e,t){this.sessionDir=e,this.checkpointsDir=ee.join(e,"checkpoints"),this.autoInterval=t?.autoInterval??10}async initialize(){let e=await this.list();e.length>0&&(this.lastCheckpointMessageCount=e[0].messageCount)}async create(e){await N(this.checkpointsDir);let t=(0,lt.randomUUID)(),r={id:t,name:e.description,trigger:e.trigger,createdAt:new Date().toISOString(),messageCount:e.messages.length,tokenCount:this.estimateTokens(e.messages)},s={info:r,messages:e.messages},i=ee.join(this.checkpointsDir,`${t}.json`);return await k(i,JSON.stringify(s,null,2)),this.lastCheckpointMessageCount=e.messages.length,r}async list(){let e=await Ze(this.checkpointsDir,/\.json$/),t=[];for(let r of e){let s=await x(r);if(s){let i=E(s,null);if(i){let o=await(0,ut.stat)(r);t.push({info:i.info,modifiedAtMs:o.mtimeMs})}}}return t.sort((r,s)=>new Date(s.info.createdAt).getTime()-new Date(r.info.createdAt).getTime()||s.modifiedAtMs-r.modifiedAtMs).map(({info:r})=>r)}async restore(e){let t=ee.join(this.checkpointsDir,`${e}.json`),r;try{r=await x(t)}catch(i){let o=i instanceof Error?i.message:String(i);throw new Error(`Failed to read checkpoint ${e}: ${o}`)}if(!r)throw new Error(`Checkpoint not found: ${e} (path: ${t})`);let s=E(r,null);if(!s)throw new Error(`Invalid checkpoint data for ${e}: JSON parse failed`);if(!s.messages||!Array.isArray(s.messages))throw new Error(`Invalid checkpoint data for ${e}: missing or invalid messages array`);if(!s.info)throw new Error(`Invalid checkpoint data for ${e}: missing info object`);return{messages:s.messages,info:s.info}}shouldAutoCheckpoint(e){return e-this.lastCheckpointMessageCount>=this.autoInterval}static isDangerousOperation(e,t){if(e=me(e),e==="Write")return!0;if(e==="Bash"){let s=t.command?.toLowerCase()||"";return["rm ","del ","git push","git reset","drop ","truncate"].some(o=>s.includes(o))}return!1}async delete(e){let t=ee.join(this.checkpointsDir,`${e}.json`);await $(t)}estimateTokens(e){let t=0;for(let r of e)if(typeof r.content=="string")t+=Math.ceil(r.content.length/4);else if(Array.isArray(r.content))for(let s of r.content)"text"in s&&(t+=Math.ceil(s.text.length/4));return t}};var j=_(require("path"),1),$e=_(require("os"),1),F=_(require("fs"),1);var Jt=Symbol.for("@xenosystem/agent-sdk/shutdown-registry"),Vt=globalThis,Oe=Vt[Jt]??={cleanups:new Set,exitHandlerRegistered:!1,signalHandlersInstalled:!1},Ne=Oe.cleanups;function zt(){for(let n of Ne)try{n()}catch{}}function dt(n){return Ne.add(n),!Oe.exitHandlerRegistered&&typeof process<"u"&&typeof process.on=="function"&&(Oe.exitHandlerRegistered=!0,process.on("exit",zt)),()=>{Ne.delete(n)}}var pt="0.10.21";var Xt=1e4,Kt=6e4,Yt="session.lock",Qt="lock.json",Q=new Map;function Le(n,e){return n!=null&&n.pid===e.pid&&n.hostname===e.hostname&&n.processStartedAt===e.processStartedAt&&n.acquiredAt===e.acquiredAt}function Zt(){for(let[n,e]of Q)try{let t=E(F.readFileSync(n,"utf8"),null);Le(t,e)&&F.unlinkSync(n)}catch{}Q.clear()}dt(Zt);var U=class n{sessionDir;lockPath;legacyLockPath;sessionId;heartbeatTimer;acquiredOwner;constructor(e){this.sessionDir=e,this.lockPath=j.join(e,Yt),this.legacyLockPath=j.join(e,Qt),this.sessionId=j.basename(e)}async acquire(){let e=new Date().toISOString(),t={schemaVersion:1,name:`session:${this.sessionId}`,sessionId:this.sessionId,pid:process.pid,hostname:$e.hostname(),processStartedAt:new Date(Date.now()-Math.floor(process.uptime()*1e3)).toISOString(),version:pt,acquiredAt:e,updatedAt:e,heartbeat:e},r=j.dirname(this.lockPath);await F.promises.mkdir(r,{recursive:!0});let s=await this.findExistingLockPath();if(s){if(!await this.isStalePath(s)){let o=await this.readLockAt(s);throw new Error(`Session ${this.sessionId} is already locked by PID ${o?.pid} on ${o?.hostname}`)}await $(s)}try{await F.promises.writeFile(this.lockPath,JSON.stringify(t,null,2),{flag:"wx",encoding:"utf-8"}),this.acquiredOwner=t,Q.set(this.lockPath,t)}catch(i){if(i.code==="EEXIST"){if(!await this.isStalePath(this.lockPath)){let l=await this.readLockAt(this.lockPath);throw new Error(`Session ${this.sessionId} is already locked by PID ${l?.pid} on ${l?.hostname}`)}await $(this.lockPath);try{await F.promises.writeFile(this.lockPath,JSON.stringify(t,null,2),{flag:"wx",encoding:"utf-8"})}catch(l){throw l.code==="EEXIST"?new Error(`Session ${this.sessionId} lock was acquired by another process during stale recovery`):l}this.acquiredOwner=t,Q.set(this.lockPath,t)}else throw i}}async release(){this.stopHeartbeat();let e=this.acquiredOwner;if(this.acquiredOwner=void 0,!e)return;Q.delete(this.lockPath);let t=await this.readLockAt(this.lockPath);Le(t,e)&&await $(this.lockPath)}async isLocked(){let e=await this.findExistingLockPath();return e?!await this.isStalePath(e):!1}async isStale(){let e=await this.findExistingLockPath();return e?this.isStalePath(e):!1}async isStalePath(e){let t=await this.readLockAt(e);if(!t)return!1;if(t.hostname===$e.hostname())try{return process.kill(t.pid,0),!1}catch(i){return i.code!=="EPERM"}let r=new Date(t.heartbeat).getTime();return Date.now()-r>Kt}startHeartbeat(e=Xt){this.heartbeatTimer&&this.stopHeartbeat(),this.heartbeatTimer=setInterval(async()=>{try{await this.updateHeartbeat()}catch(t){let r=t instanceof Error?t.message:String(t);if(t?.code==="ENOENT"){W("SessionLock: Session directory removed, stopping heartbeat"),this.stopHeartbeat();return}W(`SessionLock: Failed to update heartbeat: ${r}`)}},e),this.heartbeatTimer.unref()}stopHeartbeat(){this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=void 0)}async updateHeartbeat(){let e=await this.readLockAt(this.lockPath),t=this.acquiredOwner;if(!(!e||!t)){if(!Le(e,t)){this.acquiredOwner=void 0,Q.delete(this.lockPath),this.stopHeartbeat();return}e.heartbeat=new Date().toISOString(),e.updatedAt=e.heartbeat,await k(this.lockPath,JSON.stringify(e,null,2))}}async readLock(){let e=await this.findExistingLockPath();return e?this.readLockAt(e):null}async readLockAt(e){let t=await x(e);return t?E(t,null):null}async findExistingLockPath(){return await x(this.lockPath)?this.lockPath:await x(this.legacyLockPath)?this.legacyLockPath:null}static async cleanStale(e){let t=await ue(e),r=[];for(let s of t){let i=new n(s);if(await i.isStale()){let a=await i.findExistingLockPath();a&&await $(a),r.push(j.basename(s))}}return r}};var A=_(require("path"),1);var te=1;var C=_(require("path"),1);function er(n,e){let t=C.resolve(n),r=C.resolve(n,e);return r===t?!0:t===C.parse(t).root?r.startsWith(t):r.startsWith(t+C.sep)}function q(n,e){if(C.isAbsolute(e))return C.resolve(e);if(!er(n,e))throw new Error(`PathSecurity: Path traversal attempt detected: ${e}`);return C.resolve(n,e)}function J(n){if(n!==void 0&&n!=="agent"&&n!=="chatOnly")throw new Error("Invalid session execution mode; expected agent or chatOnly.")}var b=_(require("path"),1),we=_(require("os"),1),R=_(require("node:fs/promises"),1),Se=require("node:crypto");var V=require("node:os");var Be=require("node:path"),Kr=(0,V.platform)();var Yr=(0,V.release)(),Qr=(0,V.homedir)();function he(){let n=process.env.XENO_AGENT_HOME?.trim();return n?(0,Be.resolve)(n):(0,Be.resolve)((0,V.homedir)(),".xeno-agent")}var gt=1,ft="recent.json",tr=".lock",ht=".entries",rr=3e4,Fe=6e4,yt=new Set(["EACCES","EBUSY","EPERM"]),nr=[5,10,20,40,80,160,320],ye=new Map;function sr(n,e){let t=(0,Se.createHash)("sha256").update(e).digest("hex");return b.join(`${n}${ht}`,`${t}.json`)}async function je(n,e,t){let r={schemaVersion:1,key:e,entry:t};await k(sr(n,e),JSON.stringify(r)+`
|
|
52
52
|
`)}async function ir(n,e){let t=`${n}${ht}`,r;try{r=await R.readdir(t)}catch(s){if(s.code==="ENOENT")return;throw s}await Promise.all(r.filter(s=>s.endsWith(".json")).map(async s=>{let i=await R.readFile(b.join(t,s),"utf8").catch(()=>""),o=E(i,null);if(!(!o||o.schemaVersion!==1||typeof o.key!="string")){if(o.entry===null){delete e[o.key];return}typeof o.entry.sessionId!="string"||typeof o.entry.endedAt!="string"||(e[o.key]=o.entry)}}))}function mt(n){if(!Number.isInteger(n)||n<=0)return!1;try{return process.kill(n,0),!0}catch(e){return e.code==="EPERM"}}async function or(n){try{let[e,t]=await Promise.all([R.readFile(b.join(n,"owner.json"),"utf8").catch(()=>""),R.stat(n)]),r=E(e,null);return r?.hostname===we.hostname()&&mt(r.pid)?!1:r?.hostname&&r.hostname!==we.hostname()||!r?Date.now()-t.mtimeMs>Fe:Date.now()-t.mtimeMs>Fe||!mt(r.pid)}catch{return!1}}async function wt(n){for(let e=0;;e+=1)try{await R.rm(n,{recursive:!0});return}catch(t){let r=t.code;if(r==="ENOENT")return;let s=nr[e];if(process.platform!=="win32"||!r||!yt.has(r)||s===void 0)throw t;await new Promise(i=>setTimeout(i,s))}}async function ar(n,e){try{let t=await R.readFile(b.join(n,"owner.json"),"utf8");E(t,null)?.token===e&&await wt(n)}catch(t){if(t.code!=="ENOENT")throw t}}async function He(n,e){let t=z(n),r=ye.get(t)??Promise.resolve(),s,i=new Promise(o=>{s=o});ye.set(t,i),await r;try{return await cr(t,e)}finally{s(),ye.get(t)===i&&ye.delete(t)}}async function cr(n,e){let t=`${n}${tr}`,r=(0,Se.randomUUID)(),s=Date.now();await R.mkdir(b.dirname(n),{recursive:!0});for(let i=0;;i+=1){let o={schemaVersion:1,token:r,pid:process.pid,hostname:we.hostname(),acquiredAt:new Date().toISOString()};try{await R.mkdir(t),await R.writeFile(b.join(t,"owner.json"),JSON.stringify(o),"utf8");break}catch(a){let l=a.code,c=process.platform==="win32"&&!!l&&yt.has(l);if(l!=="EEXIST"&&!c)throw a;if(await or(t)){await wt(t);continue}if(Date.now()-s>=rr)throw new Error(`Timed out waiting for recent-sessions index lock: ${t}`);let u=Math.min(100,5+i*5)+Math.floor(Math.random()*10);await new Promise(p=>setTimeout(p,u))}}try{return await e()}finally{await ar(t,r)}}function z(n){return n===void 0?b.join(he(),ft):b.join(n,".xeno-agent",ft)}function re(n){let e=b.normalize(n).replace(/[\\/]+$/,""),t=e.length>0?e:b.parse(b.normalize(n)).root;return process.platform==="win32"?t.toLowerCase():t}async function H(n){let e=z(n),t=le(e)?await x(e):null,r=t?E(t,null):null,s=r&&typeof r=="object"?r:null,i={},o=s?.version===gt&&s.entries&&typeof s.entries=="object"?s.entries:{};for(let[a,l]of Object.entries(o)){if(!l||typeof l!="object")continue;let c=l;typeof c.sessionId!="string"||c.sessionId.length===0||typeof c.endedAt=="string"&&(i[a]={sessionId:c.sessionId,endedAt:c.endedAt,role:typeof c.role=="string"?c.role:void 0})}return await ir(e,i),{version:gt,entries:i}}async function ke(n,e={}){let t=await H(e.homeDir),r=re(n),s=t.entries[r];if(s&&!(e.role&&s.role&&s.role!==e.role))return s}async function xe(n,e={}){let t=re(n.cwd),r={sessionId:n.sessionId,role:n.role,endedAt:n.endedAt??new Date().toISOString()},s=z(e.homeDir);await je(s,t,r),await He(e.homeDir,async()=>{let i=await H(e.homeDir);i.entries[t]=r,await k(s,JSON.stringify(i,null,2)+`
|
|
53
53
|
`)})}async function St(n,e={}){let t=re(n),r=z(e.homeDir);(await H(e.homeDir)).entries[t]&&(await je(r,t,null),await He(e.homeDir,async()=>{let i=await H(e.homeDir);delete i.entries[t],await k(r,JSON.stringify(i,null,2)+`
|
|
54
54
|
`)}))}async function ne(n,e={}){let t=await H(e.homeDir),r=Object.entries(t.entries).filter(([,i])=>i.sessionId===n).map(([i])=>i);if(r.length===0)return;let s=z(e.homeDir);await Promise.all(r.map(i=>je(s,i,null))),await He(e.homeDir,async()=>{let i=await H(e.homeDir);for(let[o,a]of Object.entries(i.entries))a.sessionId===n&&delete i.entries[o];await k(s,JSON.stringify(i,null,2)+`
|
package/dist/session/index.js
CHANGED
|
@@ -48,7 +48,7 @@ ${this.stringify(e.data)}
|
|
|
48
48
|
`)+`
|
|
49
49
|
`;await S(this.transcriptPath,a);let l=this.buildMarkdownDocument(o,"session store");if(await S(this.markdownPath,l),!this.workspaceMirrorDisabled){let c=await this.resolveWorkspaceMarkdownPath();if(c)try{let u=this.buildMarkdownDocument(o,"workspace mirror");await S(c,u)}catch(u){this.workspaceMirrorDisabled=!0,$("Transcript workspace mirror disabled",u)}}}async truncateAfterMessageCount(e){let t=await k(this.transcriptPath);if(!t)return;let r=K(t),s=Math.max(0,e),i=0,o=[];for(let c of r){if(c.type==="user_message"||c.type==="assistant_message"){if(i>=s)break;i+=1}o.push(c)}let a=o.length>0?o.map(c=>JSON.stringify(c)).join(`
|
|
50
50
|
`)+`
|
|
51
|
-
`:"";await S(this.transcriptPath,a);let l=this.buildMarkdownDocument(o,"session store");if(await S(this.markdownPath,l),!this.workspaceMirrorDisabled){let c=await this.resolveWorkspaceMarkdownPath();if(c)try{let u=this.buildMarkdownDocument(o,"workspace mirror");await S(c,u)}catch(u){this.workspaceMirrorDisabled=!0,$("Transcript workspace mirror disabled",u)}}}getSequence(){return this.sequence}async initialize(){try{let e=await k(this.transcriptPath);if(!e){this.sequence=0;return}let t=K(e);if(t.length===0){this.sequence=0;return}let r=t[t.length-1];this.sequence=r.sequence+1}catch(e){let t=e instanceof Error?e.message:String(e);$(`Transcript initialization warning: ${t}. Starting with empty transcript.`),this.sequence=0}}async flush(){await this.writeQueue}};import*as Y from"path";import{randomUUID as Lt}from"crypto";import{stat as Bt}from"fs/promises";var $t={View:"Read",Replace:"Write",GlobTool:"Glob",GrepTool:"Grep",SQLiteAnalyze:"SqliteAnalyze",ReadNotebook:"NotebookRead",NotebookEditCell:"NotebookEdit",CoordinationSend:"Send",CoordinationQuery:"Receive"};function oe(n){return $t[n]??n}var I=class{sessionDir;checkpointsDir;autoInterval;lastCheckpointMessageCount=0;constructor(e,t){this.sessionDir=e,this.checkpointsDir=Y.join(e,"checkpoints"),this.autoInterval=t?.autoInterval??10}async initialize(){let e=await this.list();e.length>0&&(this.lastCheckpointMessageCount=e[0].messageCount)}async create(e){await A(this.checkpointsDir);let t=Lt(),r={id:t,name:e.description,trigger:e.trigger,createdAt:new Date().toISOString(),messageCount:e.messages.length,tokenCount:this.estimateTokens(e.messages)},s={info:r,messages:e.messages},i=Y.join(this.checkpointsDir,`${t}.json`);return await S(i,JSON.stringify(s,null,2)),this.lastCheckpointMessageCount=e.messages.length,r}async list(){let e=await We(this.checkpointsDir,/\.json$/),t=[];for(let r of e){let s=await k(r);if(s){let i=P(s,null);if(i){let o=await Bt(r);t.push({info:i.info,modifiedAtMs:o.mtimeMs})}}}return t.sort((r,s)=>new Date(s.info.createdAt).getTime()-new Date(r.info.createdAt).getTime()||s.modifiedAtMs-r.modifiedAtMs).map(({info:r})=>r)}async restore(e){let t=Y.join(this.checkpointsDir,`${e}.json`),r;try{r=await k(t)}catch(i){let o=i instanceof Error?i.message:String(i);throw new Error(`Failed to read checkpoint ${e}: ${o}`)}if(!r)throw new Error(`Checkpoint not found: ${e} (path: ${t})`);let s=P(r,null);if(!s)throw new Error(`Invalid checkpoint data for ${e}: JSON parse failed`);if(!s.messages||!Array.isArray(s.messages))throw new Error(`Invalid checkpoint data for ${e}: missing or invalid messages array`);if(!s.info)throw new Error(`Invalid checkpoint data for ${e}: missing info object`);return{messages:s.messages,info:s.info}}shouldAutoCheckpoint(e){return e-this.lastCheckpointMessageCount>=this.autoInterval}static isDangerousOperation(e,t){if(e=oe(e),e==="Write")return!0;if(e==="Bash"){let s=t.command?.toLowerCase()||"";return["rm ","del ","git push","git reset","drop ","truncate"].some(o=>s.includes(o))}return!1}async delete(e){let t=Y.join(this.checkpointsDir,`${e}.json`);await O(t)}estimateTokens(e){let t=0;for(let r of e)if(typeof r.content=="string")t+=Math.ceil(r.content.length/4);else if(Array.isArray(r.content))for(let s of r.content)"text"in s&&(t+=Math.ceil(s.text.length/4));return t}};import*as B from"path";import*as Pe from"os";import*as L from"fs";var Ft=Symbol.for("@xenosystem/agent-sdk/shutdown-registry"),jt=globalThis,xe=jt[Ft]??={cleanups:new Set,exitHandlerRegistered:!1,signalHandlersInstalled:!1},ve=xe.cleanups;function Ht(){for(let n of ve)try{n()}catch{}}function Qe(n){return ve.add(n),!xe.exitHandlerRegistered&&typeof process<"u"&&typeof process.on=="function"&&(xe.exitHandlerRegistered=!0,process.on("exit",Ht)),()=>{ve.delete(n)}}var Ze="0.10.
|
|
51
|
+
`:"";await S(this.transcriptPath,a);let l=this.buildMarkdownDocument(o,"session store");if(await S(this.markdownPath,l),!this.workspaceMirrorDisabled){let c=await this.resolveWorkspaceMarkdownPath();if(c)try{let u=this.buildMarkdownDocument(o,"workspace mirror");await S(c,u)}catch(u){this.workspaceMirrorDisabled=!0,$("Transcript workspace mirror disabled",u)}}}getSequence(){return this.sequence}async initialize(){try{let e=await k(this.transcriptPath);if(!e){this.sequence=0;return}let t=K(e);if(t.length===0){this.sequence=0;return}let r=t[t.length-1];this.sequence=r.sequence+1}catch(e){let t=e instanceof Error?e.message:String(e);$(`Transcript initialization warning: ${t}. Starting with empty transcript.`),this.sequence=0}}async flush(){await this.writeQueue}};import*as Y from"path";import{randomUUID as Lt}from"crypto";import{stat as Bt}from"fs/promises";var $t={View:"Read",Replace:"Write",GlobTool:"Glob",GrepTool:"Grep",SQLiteAnalyze:"SqliteAnalyze",ReadNotebook:"NotebookRead",NotebookEditCell:"NotebookEdit",CoordinationSend:"Send",CoordinationQuery:"Receive"};function oe(n){return $t[n]??n}var I=class{sessionDir;checkpointsDir;autoInterval;lastCheckpointMessageCount=0;constructor(e,t){this.sessionDir=e,this.checkpointsDir=Y.join(e,"checkpoints"),this.autoInterval=t?.autoInterval??10}async initialize(){let e=await this.list();e.length>0&&(this.lastCheckpointMessageCount=e[0].messageCount)}async create(e){await A(this.checkpointsDir);let t=Lt(),r={id:t,name:e.description,trigger:e.trigger,createdAt:new Date().toISOString(),messageCount:e.messages.length,tokenCount:this.estimateTokens(e.messages)},s={info:r,messages:e.messages},i=Y.join(this.checkpointsDir,`${t}.json`);return await S(i,JSON.stringify(s,null,2)),this.lastCheckpointMessageCount=e.messages.length,r}async list(){let e=await We(this.checkpointsDir,/\.json$/),t=[];for(let r of e){let s=await k(r);if(s){let i=P(s,null);if(i){let o=await Bt(r);t.push({info:i.info,modifiedAtMs:o.mtimeMs})}}}return t.sort((r,s)=>new Date(s.info.createdAt).getTime()-new Date(r.info.createdAt).getTime()||s.modifiedAtMs-r.modifiedAtMs).map(({info:r})=>r)}async restore(e){let t=Y.join(this.checkpointsDir,`${e}.json`),r;try{r=await k(t)}catch(i){let o=i instanceof Error?i.message:String(i);throw new Error(`Failed to read checkpoint ${e}: ${o}`)}if(!r)throw new Error(`Checkpoint not found: ${e} (path: ${t})`);let s=P(r,null);if(!s)throw new Error(`Invalid checkpoint data for ${e}: JSON parse failed`);if(!s.messages||!Array.isArray(s.messages))throw new Error(`Invalid checkpoint data for ${e}: missing or invalid messages array`);if(!s.info)throw new Error(`Invalid checkpoint data for ${e}: missing info object`);return{messages:s.messages,info:s.info}}shouldAutoCheckpoint(e){return e-this.lastCheckpointMessageCount>=this.autoInterval}static isDangerousOperation(e,t){if(e=oe(e),e==="Write")return!0;if(e==="Bash"){let s=t.command?.toLowerCase()||"";return["rm ","del ","git push","git reset","drop ","truncate"].some(o=>s.includes(o))}return!1}async delete(e){let t=Y.join(this.checkpointsDir,`${e}.json`);await O(t)}estimateTokens(e){let t=0;for(let r of e)if(typeof r.content=="string")t+=Math.ceil(r.content.length/4);else if(Array.isArray(r.content))for(let s of r.content)"text"in s&&(t+=Math.ceil(s.text.length/4));return t}};import*as B from"path";import*as Pe from"os";import*as L from"fs";var Ft=Symbol.for("@xenosystem/agent-sdk/shutdown-registry"),jt=globalThis,xe=jt[Ft]??={cleanups:new Set,exitHandlerRegistered:!1,signalHandlersInstalled:!1},ve=xe.cleanups;function Ht(){for(let n of ve)try{n()}catch{}}function Qe(n){return ve.add(n),!xe.exitHandlerRegistered&&typeof process<"u"&&typeof process.on=="function"&&(xe.exitHandlerRegistered=!0,process.on("exit",Ht)),()=>{ve.delete(n)}}var Ze="0.10.21";var Wt=1e4,Gt=6e4,Ut="session.lock",qt="lock.json",q=new Map;function Ee(n,e){return n!=null&&n.pid===e.pid&&n.hostname===e.hostname&&n.processStartedAt===e.processStartedAt&&n.acquiredAt===e.acquiredAt}function Jt(){for(let[n,e]of q)try{let t=P(L.readFileSync(n,"utf8"),null);Ee(t,e)&&L.unlinkSync(n)}catch{}q.clear()}Qe(Jt);var J=class n{sessionDir;lockPath;legacyLockPath;sessionId;heartbeatTimer;acquiredOwner;constructor(e){this.sessionDir=e,this.lockPath=B.join(e,Ut),this.legacyLockPath=B.join(e,qt),this.sessionId=B.basename(e)}async acquire(){let e=new Date().toISOString(),t={schemaVersion:1,name:`session:${this.sessionId}`,sessionId:this.sessionId,pid:process.pid,hostname:Pe.hostname(),processStartedAt:new Date(Date.now()-Math.floor(process.uptime()*1e3)).toISOString(),version:Ze,acquiredAt:e,updatedAt:e,heartbeat:e},r=B.dirname(this.lockPath);await L.promises.mkdir(r,{recursive:!0});let s=await this.findExistingLockPath();if(s){if(!await this.isStalePath(s)){let o=await this.readLockAt(s);throw new Error(`Session ${this.sessionId} is already locked by PID ${o?.pid} on ${o?.hostname}`)}await O(s)}try{await L.promises.writeFile(this.lockPath,JSON.stringify(t,null,2),{flag:"wx",encoding:"utf-8"}),this.acquiredOwner=t,q.set(this.lockPath,t)}catch(i){if(i.code==="EEXIST"){if(!await this.isStalePath(this.lockPath)){let l=await this.readLockAt(this.lockPath);throw new Error(`Session ${this.sessionId} is already locked by PID ${l?.pid} on ${l?.hostname}`)}await O(this.lockPath);try{await L.promises.writeFile(this.lockPath,JSON.stringify(t,null,2),{flag:"wx",encoding:"utf-8"})}catch(l){throw l.code==="EEXIST"?new Error(`Session ${this.sessionId} lock was acquired by another process during stale recovery`):l}this.acquiredOwner=t,q.set(this.lockPath,t)}else throw i}}async release(){this.stopHeartbeat();let e=this.acquiredOwner;if(this.acquiredOwner=void 0,!e)return;q.delete(this.lockPath);let t=await this.readLockAt(this.lockPath);Ee(t,e)&&await O(this.lockPath)}async isLocked(){let e=await this.findExistingLockPath();return e?!await this.isStalePath(e):!1}async isStale(){let e=await this.findExistingLockPath();return e?this.isStalePath(e):!1}async isStalePath(e){let t=await this.readLockAt(e);if(!t)return!1;if(t.hostname===Pe.hostname())try{return process.kill(t.pid,0),!1}catch(i){return i.code!=="EPERM"}let r=new Date(t.heartbeat).getTime();return Date.now()-r>Gt}startHeartbeat(e=Wt){this.heartbeatTimer&&this.stopHeartbeat(),this.heartbeatTimer=setInterval(async()=>{try{await this.updateHeartbeat()}catch(t){let r=t instanceof Error?t.message:String(t);if(t?.code==="ENOENT"){F("SessionLock: Session directory removed, stopping heartbeat"),this.stopHeartbeat();return}F(`SessionLock: Failed to update heartbeat: ${r}`)}},e),this.heartbeatTimer.unref()}stopHeartbeat(){this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=void 0)}async updateHeartbeat(){let e=await this.readLockAt(this.lockPath),t=this.acquiredOwner;if(!(!e||!t)){if(!Ee(e,t)){this.acquiredOwner=void 0,q.delete(this.lockPath),this.stopHeartbeat();return}e.heartbeat=new Date().toISOString(),e.updatedAt=e.heartbeat,await S(this.lockPath,JSON.stringify(e,null,2))}}async readLock(){let e=await this.findExistingLockPath();return e?this.readLockAt(e):null}async readLockAt(e){let t=await k(e);return t?P(t,null):null}async findExistingLockPath(){return await k(this.lockPath)?this.lockPath:await k(this.legacyLockPath)?this.legacyLockPath:null}static async cleanStale(e){let t=await se(e),r=[];for(let s of t){let i=new n(s);if(await i.isStale()){let a=await i.findExistingLockPath();a&&await O(a),r.push(B.basename(s))}}return r}};import*as D from"path";var Q=1;import*as M from"path";function Vt(n,e){let t=M.resolve(n),r=M.resolve(n,e);return r===t?!0:t===M.parse(t).root?r.startsWith(t):r.startsWith(t+M.sep)}function H(n,e){if(M.isAbsolute(e))return M.resolve(e);if(!Vt(n,e))throw new Error(`PathSecurity: Path traversal attempt detected: ${e}`);return M.resolve(n,e)}function W(n){if(n!==void 0&&n!=="agent"&&n!=="chatOnly")throw new Error("Invalid session execution mode; expected agent or chatOnly.")}import*as T from"path";import*as le from"os";import*as b from"node:fs/promises";import{createHash as Kt,randomUUID as Yt}from"node:crypto";import{homedir as tt,platform as zt,release as Xt}from"node:os";import{resolve as et}from"node:path";var cn=zt();var ln=Xt(),un=tt();function ae(){let n=process.env.XENO_AGENT_HOME?.trim();return n?et(n):et(tt(),".xeno-agent")}var rt=1,nt="recent.json",Qt=".lock",it=".entries",Zt=3e4,Te=6e4,ot=new Set(["EACCES","EBUSY","EPERM"]),er=[5,10,20,40,80,160,320],ce=new Map;function tr(n,e){let t=Kt("sha256").update(e).digest("hex");return T.join(`${n}${it}`,`${t}.json`)}async function be(n,e,t){let r={schemaVersion:1,key:e,entry:t};await S(tr(n,e),JSON.stringify(r)+`
|
|
52
52
|
`)}async function rr(n,e){let t=`${n}${it}`,r;try{r=await b.readdir(t)}catch(s){if(s.code==="ENOENT")return;throw s}await Promise.all(r.filter(s=>s.endsWith(".json")).map(async s=>{let i=await b.readFile(T.join(t,s),"utf8").catch(()=>""),o=P(i,null);if(!(!o||o.schemaVersion!==1||typeof o.key!="string")){if(o.entry===null){delete e[o.key];return}typeof o.entry.sessionId!="string"||typeof o.entry.endedAt!="string"||(e[o.key]=o.entry)}}))}function st(n){if(!Number.isInteger(n)||n<=0)return!1;try{return process.kill(n,0),!0}catch(e){return e.code==="EPERM"}}async function nr(n){try{let[e,t]=await Promise.all([b.readFile(T.join(n,"owner.json"),"utf8").catch(()=>""),b.stat(n)]),r=P(e,null);return r?.hostname===le.hostname()&&st(r.pid)?!1:r?.hostname&&r.hostname!==le.hostname()||!r?Date.now()-t.mtimeMs>Te:Date.now()-t.mtimeMs>Te||!st(r.pid)}catch{return!1}}async function at(n){for(let e=0;;e+=1)try{await b.rm(n,{recursive:!0});return}catch(t){let r=t.code;if(r==="ENOENT")return;let s=er[e];if(process.platform!=="win32"||!r||!ot.has(r)||s===void 0)throw t;await new Promise(i=>setTimeout(i,s))}}async function sr(n,e){try{let t=await b.readFile(T.join(n,"owner.json"),"utf8");P(t,null)?.token===e&&await at(n)}catch(t){if(t.code!=="ENOENT")throw t}}async function Re(n,e){let t=V(n),r=ce.get(t)??Promise.resolve(),s,i=new Promise(o=>{s=o});ce.set(t,i),await r;try{return await ir(t,e)}finally{s(),ce.get(t)===i&&ce.delete(t)}}async function ir(n,e){let t=`${n}${Qt}`,r=Yt(),s=Date.now();await b.mkdir(T.dirname(n),{recursive:!0});for(let i=0;;i+=1){let o={schemaVersion:1,token:r,pid:process.pid,hostname:le.hostname(),acquiredAt:new Date().toISOString()};try{await b.mkdir(t),await b.writeFile(T.join(t,"owner.json"),JSON.stringify(o),"utf8");break}catch(a){let l=a.code,c=process.platform==="win32"&&!!l&&ot.has(l);if(l!=="EEXIST"&&!c)throw a;if(await nr(t)){await at(t);continue}if(Date.now()-s>=Zt)throw new Error(`Timed out waiting for recent-sessions index lock: ${t}`);let u=Math.min(100,5+i*5)+Math.floor(Math.random()*10);await new Promise(p=>setTimeout(p,u))}}try{return await e()}finally{await sr(t,r)}}function V(n){return n===void 0?T.join(ae(),nt):T.join(n,".xeno-agent",nt)}function ue(n){let e=T.normalize(n).replace(/[\\/]+$/,""),t=e.length>0?e:T.parse(T.normalize(n)).root;return process.platform==="win32"?t.toLowerCase():t}async function G(n){let e=V(n),t=ne(e)?await k(e):null,r=t?P(t,null):null,s=r&&typeof r=="object"?r:null,i={},o=s?.version===rt&&s.entries&&typeof s.entries=="object"?s.entries:{};for(let[a,l]of Object.entries(o)){if(!l||typeof l!="object")continue;let c=l;typeof c.sessionId!="string"||c.sessionId.length===0||typeof c.endedAt=="string"&&(i[a]={sessionId:c.sessionId,endedAt:c.endedAt,role:typeof c.role=="string"?c.role:void 0})}return await rr(e,i),{version:rt,entries:i}}async function _e(n,e={}){let t=await G(e.homeDir),r=ue(n),s=t.entries[r];if(s&&!(e.role&&s.role&&s.role!==e.role))return s}async function Me(n,e={}){let t=ue(n.cwd),r={sessionId:n.sessionId,role:n.role,endedAt:n.endedAt??new Date().toISOString()},s=V(e.homeDir);await be(s,t,r),await Re(e.homeDir,async()=>{let i=await G(e.homeDir);i.entries[t]=r,await S(s,JSON.stringify(i,null,2)+`
|
|
53
53
|
`)})}async function or(n,e={}){let t=ue(n),r=V(e.homeDir);(await G(e.homeDir)).entries[t]&&(await be(r,t,null),await Re(e.homeDir,async()=>{let i=await G(e.homeDir);delete i.entries[t],await S(r,JSON.stringify(i,null,2)+`
|
|
54
54
|
`)}))}async function de(n,e={}){let t=await G(e.homeDir),r=Object.entries(t.entries).filter(([,i])=>i.sessionId===n).map(([i])=>i);if(r.length===0)return;let s=V(e.homeDir);await Promise.all(r.map(i=>be(s,i,null))),await Re(e.homeDir,async()=>{let i=await G(e.homeDir);for(let[o,a]of Object.entries(i.entries))a.sessionId===n&&delete i.entries[o];await S(s,JSON.stringify(i,null,2)+`
|
package/dist/utils/index.cjs
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
"use strict";var ht=Object.create;var E=Object.defineProperty;var xt=Object.getOwnPropertyDescriptor;var yt=Object.getOwnPropertyNames;var wt=Object.getPrototypeOf,bt=Object.prototype.hasOwnProperty;var Et=(t,e)=>{for(var n in e)E(t,n,{get:e[n],enumerable:!0})},B=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of yt(e))!bt.call(t,o)&&o!==n&&E(t,o,{get:()=>e[o],enumerable:!(r=xt(e,o))||r.enumerable});return t};var
|
|
2
|
-
`,"utf-8")}async function
|
|
3
|
-
`,"utf-8"),await r.sync()}finally{await r.close()}}function
|
|
4
|
-
`)?"CRLF":"LF"}function
|
|
1
|
+
"use strict";var ht=Object.create;var E=Object.defineProperty;var xt=Object.getOwnPropertyDescriptor;var yt=Object.getOwnPropertyNames;var wt=Object.getPrototypeOf,bt=Object.prototype.hasOwnProperty;var Et=(t,e)=>{for(var n in e)E(t,n,{get:e[n],enumerable:!0})},B=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of yt(e))!bt.call(t,o)&&o!==n&&E(t,o,{get:()=>e[o],enumerable:!(r=xt(e,o))||r.enumerable});return t};var S=(t,e,n)=>(n=t!=null?ht(wt(t)):{},B(e||!t||!t.__esModule?E(n,"default",{value:t,enumerable:!0}):n,t)),Rt=t=>B(E({},"__esModule",{value:!0}),t);var nn={};Et(nn,{ApiTransientError:()=>b,HOME_DIR:()=>te,IS_LINUX:()=>Qt,IS_MAC:()=>Zt,IS_WINDOWS:()=>Z,LogLevel:()=>V,OS_VERSION:()=>Vt,PLATFORM:()=>T,accountTextTokens:()=>_e,appendDurableLine:()=>St,appendLine:()=>_t,benchmarkLeakError:()=>He,buildToolResultBlock:()=>tn,buildToolResultText:()=>gt,calculateCost:()=>Oe,commandMentionsBenchmarkLeak:()=>Je,conservativeTokenAccountingAdapter:()=>ot,copyTextToClipboard:()=>Be,createSafeRegex:()=>fe,debug:()=>me,decodeTextBuffer:()=>j,deleteDir:()=>Ft,deleteFile:()=>Dt,detectLineEnding:()=>q,detectPreferredLineEnding:()=>Nt,detectTextEncoding:()=>D,encodeTextBuffer:()=>W,ensureDir:()=>R,error:()=>xe,estimateTokens:()=>it,estimateTokensForModel:()=>rt,existsSync:()=>Bt,filterBenchmarkLeakPaths:()=>ze,findSimilarFile:()=>Ot,fitsInBudget:()=>$e,formatCost:()=>Le,getAgentHome:()=>ee,getBenchmarkReferenceOverwriteHint:()=>Ye,getBoolean:()=>ce,getConfigDir:()=>ne,getLogLevel:()=>pe,getNumber:()=>ue,getProjectConfigDir:()=>re,getRetryErrorContext:()=>N,getShellName:()=>oe,getString:()=>ae,getToolResultTransportContent:()=>Ke,hasDir:()=>At,hasDisallowedAsciiControlCharacter:()=>en,hasFile:()=>Tt,hasFrontmatter:()=>Ht,hasNonTextToolResultContent:()=>Qe,hasTransientStatusMention:()=>et,info:()=>ge,isBenchmarkLeakPath:()=>O,isBenchmarkMode:()=>v,isGitRepo:()=>ie,isPathSafe:()=>G,isRetryableError:()=>nt,listDirs:()=>It,listFiles:()=>Pt,normalizeLineEndings:()=>X,normalizeXenoRequestContext:()=>Ee,parseDocument:()=>Xt,parseJsonLines:()=>qt,readFileSafe:()=>Ct,readIfExists:()=>Lt,readTextFile:()=>z,remainingBudget:()=>Ne,renameReplacingWithRetry:()=>I,safeJsonParse:()=>jt,safeJsonStringify:()=>Wt,safeRegexTest:()=>le,safeResolvePath:()=>Kt,setLogLevel:()=>de,stringifyDocument:()=>zt,toTransportAssistantBlocks:()=>Ve,toolAssistantContentToText:()=>pt,toolResultContentToText:()=>Ge,truncateToTokens:()=>Se,validateRegexPattern:()=>Q,validateRequired:()=>se,warn:()=>he,withRetry:()=>Me,writeAtomic:()=>P,writeTextFile:()=>$t,xenoRequestContextHeaders:()=>Re});module.exports=Rt(nn);var w=require("node:fs"),h=require("node:fs"),c=S(require("node:fs/promises"),1),a=S(require("node:path"),1);function Tt(t){try{return(0,h.existsSync)(t)&&(0,h.statSync)(t).isFile()}catch{return!1}}function At(t){try{return(0,h.existsSync)(t)&&(0,h.statSync)(t).isDirectory()}catch{return!1}}function Ct(t,e=""){try{return(0,w.readFileSync)(t,"utf-8")}catch{return e}}async function R(t){await c.mkdir(t,{recursive:!0})}async function P(t,e){let n=a.dirname(t);await R(n);let r=Math.random().toString(36).substring(2,15),o=`${t}.tmp.${process.pid}.${r}`;try{await c.writeFile(o,e),await I(o,t)}finally{try{await c.unlink(o)}catch{}}}var kt=new Set(["EACCES","EBUSY","EPERM"]),Mt=[10,20,40,80,160,320,640];async function I(t,e){for(let n=0;;n+=1)try{await c.rename(t,e);return}catch(r){let o=r.code,i=Mt[n];if(process.platform!=="win32"||!o||!kt.has(o)||i===void 0)throw r;await new Promise(s=>setTimeout(s,i))}}async function _t(t,e){let n=a.dirname(t);await R(n),await c.appendFile(t,e+`
|
|
2
|
+
`,"utf-8")}async function St(t,e){let n=a.dirname(t);await R(n);let r=await c.open(t,"a");try{await r.writeFile(e+`
|
|
3
|
+
`,"utf-8"),await r.sync()}finally{await r.close()}}function D(t){return t.length>=3&&t[0]===239&&t[1]===187&&t[2]===191?"utf8-bom":t.length>=2&&t[0]===255&&t[1]===254?"utf16le":t.length>=2&&t[0]===254&&t[1]===255?"utf16be":"utf8"}function F(t){let e=Buffer.from(t);for(let n=0;n+1<e.length;n+=2){let r=e[n];e[n]=e[n+1],e[n+1]=r}return e}function j(t,e){switch(e){case"utf8-bom":return t.subarray(3).toString("utf8");case"utf16le":return t.subarray(2).toString("utf16le");case"utf16be":return F(t.subarray(2)).toString("utf16le");default:return t.toString("utf8")}}function W(t,e){switch(e){case"utf8-bom":return Buffer.concat([Buffer.from([239,187,191]),Buffer.from(t,"utf8")]);case"utf16le":return Buffer.concat([Buffer.from([255,254]),Buffer.from(t,"utf16le")]);case"utf16be":return Buffer.concat([Buffer.from([254,255]),F(Buffer.from(t,"utf16le"))]);default:return Buffer.from(t,"utf8")}}function q(t){return t.includes(`\r
|
|
4
|
+
`)?"CRLF":"LF"}function X(t,e){let n=t.replace(/\r\n/g,`
|
|
5
5
|
`);return e==="CRLF"?n.replace(/\n/g,`\r
|
|
6
|
-
`):n}async function
|
|
7
|
-
`)){let r=n.trim();if(r)try{e.push(JSON.parse(r))}catch{}}return e}function
|
|
8
|
-
`)}function
|
|
9
|
-
`)),nextIndex:r}}function
|
|
10
|
-
`)}function
|
|
11
|
-
${
|
|
6
|
+
`):n}async function z(t){let e=await c.readFile(t),n=D(e),r=j(e,n);return{content:r,encoding:n,lineEnding:q(r),sizeBytes:e.length}}async function $t(t,e,n){let r=X(e,n?.lineEnding??"LF");await P(t,W(r,n?.encoding??"utf8"))}async function Nt(t){let e=new Set,n=a.resolve(t);for(;!e.has(n);){e.add(n);try{let o=(0,w.readdirSync)(n,{withFileTypes:!0}).filter(i=>i.isFile()).map(i=>i.name).sort();for(let i of o){if(i.startsWith("."))continue;let s=a.extname(i).toLowerCase();if([".ts",".tsx",".js",".jsx",".json",".md",".txt",".yaml",".yml",".css",".html",".xml",".sh",".ps1"].includes(s))try{let u=a.join(n,i),f=await z(u);if(f.content.length>0)return f.lineEnding}catch{}}}catch{}let r=a.dirname(n);if(r===n)break;n=r}return"LF"}function vt(t,e,n){let r=[],o=[{dir:t,depth:0}],i=new Set;for(;o.length>0&&r.length<n;){let s=o.shift();if(!i.has(s.dir)){i.add(s.dir);try{let u=(0,w.readdirSync)(s.dir,{withFileTypes:!0});for(let f of u){let d=a.join(s.dir,f.name);if(f.isFile()){if(r.push(d),r.length>=n)break;continue}f.isDirectory()&&s.depth<e&&!f.name.startsWith(".")&&f.name!=="node_modules"&&o.push({dir:d,depth:s.depth+1})}}catch{}}}return r}function Ot(t){try{let e=a.dirname(t),n=a.basename(t,a.extname(t)).toLowerCase(),r=a.basename(t).toLowerCase(),i=[e,a.dirname(e)].flatMap(u=>vt(u,2,500)),s=null;for(let u of i){let f=a.basename(u).toLowerCase(),d=a.basename(u,a.extname(u)).toLowerCase(),g=null;if(f===r?g=0:d===n?g=1:(f.includes(n)||n.includes(d))&&(g=2),g===null)continue;let _=a.relative(e,u).split(a.sep).length,L=g+_*.01;(!s||L<s.score)&&(s={filePath:u,score:L})}return s?.filePath??null}catch{}return null}async function Lt(t){try{return await c.readFile(t,"utf-8")}catch(e){if(e.code==="ENOENT")return null;throw e}}function Bt(t){return(0,h.existsSync)(t)}async function Pt(t,e){try{let r=(await c.readdir(t,{withFileTypes:!0})).filter(o=>o.isFile()).map(o=>a.join(t,o.name));return e&&(r=r.filter(o=>e.test(a.basename(o)))),r}catch(n){if(n.code==="ENOENT")return[];throw n}}async function It(t){try{return(await c.readdir(t,{withFileTypes:!0})).filter(n=>n.isDirectory()).map(n=>a.join(t,n.name))}catch(e){if(e.code==="ENOENT")return[];throw e}}async function Dt(t){try{await c.unlink(t)}catch(e){if(e.code!=="ENOENT")throw e}}async function Ft(t){try{await c.rm(t,{recursive:!0,force:!0})}catch(e){if(e.code!=="ENOENT")throw e}}function jt(t,e){try{return JSON.parse(t)}catch{return e}}function Wt(t,e="{}"){try{return JSON.stringify(t)}catch{return e}}function qt(t){let e=[];for(let n of t.split(`
|
|
7
|
+
`)){let r=n.trim();if(r)try{e.push(JSON.parse(r))}catch{}}return e}function Xt(t){let e=Jt(t);return{frontmatter:e.frontmatter,content:e.content.trim()}}function zt(t,e){let n=Object.fromEntries(Object.entries(t).filter(([r,o])=>o!==void 0));return["---",U(n),"---","",e].join(`
|
|
8
|
+
`)}function Ht(t){return t.trimStart().startsWith("---")}function Jt(t){let e=t.replace(/^\uFEFF/,"");if(!e.startsWith("---"))return{frontmatter:{},content:t};let n=e.search(/\r?\n/);if(n<0||e.slice(0,n).trim()!=="---")return{frontmatter:{},content:t};let r=e.slice(n+(e[n]==="\r"?2:1)),o=r.match(/(?:^|\r?\n)---[ \t]*(?:\r?\n|$)/);if(!o||o.index===void 0)throw new Error("YAML frontmatter is not closed.");let i=r.slice(0,o.index),s=o[0],u=o.index+s.length;return{frontmatter:J(i),content:r.slice(u)}}function J(t){let e={},n=t.split(/\r?\n/);for(let r=0;r<n.length;r+=1){let o=n[r];if(!o.trim()||o.trimStart().startsWith("#"))continue;if(/^\s/.test(o))throw new Error(`Unexpected indentation at line ${r+1}.`);let i=Ut(o,r+1);if(i.key==="<<")throw new Error("YAML merge keys are not supported.");if(i.value!==""){e[i.key]=Y(i.value,r+1);continue}let s=Yt(n,r+1);e[i.key]=s.value,r=s.nextIndex-1}return e}function Yt(t,e){let n=[],r=e;for(;r<t.length;r+=1){let i=t[r];if(!i.trim()){n.push(i);continue}if(!/^\s/.test(i))break;n.push(i.replace(/^ {2}/,""))}let o=n.filter(i=>i.trim()&&!i.trimStart().startsWith("#"));return o.length===0?{value:{},nextIndex:r}:o.every(i=>i.trimStart().startsWith("- "))?{value:o.map((i,s)=>Y(i.trimStart().slice(2),e+s+1)),nextIndex:r}:{value:J(n.join(`
|
|
9
|
+
`)),nextIndex:r}}function Ut(t,e){let n=t.indexOf(":");if(n<=0)throw new Error(`Invalid YAML line ${e}.`);let r=t.slice(0,n).trim(),o=t.slice(n+1).trim();if(!r)throw new Error(`Invalid YAML key at line ${e}.`);return{key:r,value:o}}function Y(t,e){if(t==="")return"";if(t==="[]")return[];if(t==="{}")return{};if(t==="true")return!0;if(t==="false")return!1;if(t==="null"||t==="~")return null;if(/^-?\d+(?:\.\d+)?$/.test(t))return Number(t);if(t.startsWith('"'))return H(t,e);if(t.startsWith("'")){if(!t.endsWith("'"))throw new Error(`Unclosed quoted scalar at line ${e}.`);return t.slice(1,-1).replace(/''/g,"'")}if(t.startsWith("[")||t.startsWith("{"))return H(t,e);if(t.includes("[")||t.includes("]")||t.includes("{")||t.includes("}"))throw new Error(`Unsupported YAML scalar at line ${e}.`);return t}function H(t,e){try{return JSON.parse(t)}catch{throw new Error(`Invalid YAML scalar at line ${e}.`)}}function U(t,e=""){return Object.entries(t).map(([n,r])=>Gt(n,r,e)).join(`
|
|
10
|
+
`)}function Gt(t,e,n){return Array.isArray(e)?`${n}${t}: ${JSON.stringify(e)}`:e&&typeof e=="object"?`${n}${t}:
|
|
11
|
+
${U(e,`${n} `)}`:`${n}${t}: ${JSON.stringify(e)}`}var l=S(require("path"),1);function G(t,e){let n=l.resolve(t),r=l.resolve(t,e);return r===n?!0:n===l.parse(n).root?r.startsWith(n):r.startsWith(n+l.sep)}function Kt(t,e){if(l.isAbsolute(e))return l.resolve(e);if(!G(t,e))throw new Error(`PathSecurity: Path traversal attempt detected: ${e}`);return l.resolve(t,e)}var p=require("node:os"),K=require("node:child_process"),x=require("node:path"),T=(0,p.platform)(),Z=T==="win32",Zt=T==="darwin",Qt=T==="linux",Vt=(0,p.release)(),te=(0,p.homedir)();function ee(){let t=process.env.XENO_AGENT_HOME?.trim();return t?(0,x.resolve)(t):(0,x.resolve)((0,p.homedir)(),".xeno-agent")}function ne(){let t=process.env.XENO_CONFIG_DIR?.trim();return t?(0,x.resolve)(t):(0,x.resolve)((0,p.homedir)(),".xeno-code")}function re(t){return(0,x.resolve)(t,".xeno-code")}function oe(){return Z?"powershell":process.env.SHELL?.split("/").pop()??"bash"}function ie(t){try{return(0,K.execSync)("git rev-parse --is-inside-work-tree",{cwd:t,stdio:"ignore"}),!0}catch{return!1}}function se(t,e){for(let n of e)if(t[n]===void 0||t[n]===null||t[n]==="")return`Missing required parameter: ${n}`;return null}function ae(t,e,n){let r=t[e];if(r==null){if(n!==void 0)return n;throw new Error(`Missing required parameter: ${e}`)}if(typeof r!="string")throw new Error(`Parameter ${e} must be a string, got ${typeof r}`);return r}function ue(t,e,n){let r=t[e];if(r==null){if(n!==void 0)return n;throw new Error(`Missing required parameter: ${e}`)}if(typeof r!="number")throw new Error(`Parameter ${e} must be a number, got ${typeof r}`);if(isNaN(r))throw new Error(`Parameter ${e} is NaN`);return r}function ce(t,e,n){let r=t[e];if(r==null){if(n!==void 0)return n;throw new Error(`Missing required parameter: ${e}`)}if(typeof r!="boolean")throw new Error(`Parameter ${e} must be a boolean, got ${typeof r}`);return r}function Q(t){if(t.length>5e3)return"Pattern too long (max 5000 characters)";let n=[/(\.\*){3,}/,/(\+\+|\*\*)/,/(.*\+.*\+.*\+)/];for(let r of n)if(r.test(t))return"Pattern contains potentially unsafe constructs that could cause excessive backtracking";return null}function fe(t,e,n=5e3){let r=Q(t);if(r)throw new Error(r);try{return new RegExp(t,e)}catch(o){let i=o instanceof Error?o.message:String(o);throw new Error(`Invalid regex pattern: ${i}`)}}function le(t,e,n=1e3){if(e.length>1e5)throw new Error(`Input too large for safe regex test (${e.length} chars, max 100000)`);return t.test(e)}var V=(i=>(i[i.DEBUG=0]="DEBUG",i[i.INFO=1]="INFO",i[i.WARN=2]="WARN",i[i.ERROR=3]="ERROR",i[i.SILENT=4]="SILENT",i))(V||{}),y=1;function de(t){y=t}function pe(){return y}function m(){return new Date().toISOString()}function me(t,e){y<=0&&(e!==void 0?process.stderr.write(`[${m()}] DEBUG: ${t} ${A(e)}
|
|
12
12
|
`):process.stderr.write(`[${m()}] DEBUG: ${t}
|
|
13
|
-
`))}function ge(t,e){y<=1&&(e!==void 0?process.stderr.write(`[${m()}] INFO: ${t} ${
|
|
13
|
+
`))}function ge(t,e){y<=1&&(e!==void 0?process.stderr.write(`[${m()}] INFO: ${t} ${A(e)}
|
|
14
14
|
`):process.stderr.write(`[${m()}] INFO: ${t}
|
|
15
|
-
`))}function he(t,e){y<=2&&(e!==void 0?process.stderr.write(`[${m()}] WARN: ${t} ${
|
|
15
|
+
`))}function he(t,e){y<=2&&(e!==void 0?process.stderr.write(`[${m()}] WARN: ${t} ${A(e)}
|
|
16
16
|
`):process.stderr.write(`[${m()}] WARN: ${t}
|
|
17
|
-
`))}function xe(t,e){y<=3&&(e!==void 0?process.stderr.write(`[${m()}] ERROR: ${t} ${
|
|
17
|
+
`))}function xe(t,e){y<=3&&(e!==void 0?process.stderr.write(`[${m()}] ERROR: ${t} ${A(e)}
|
|
18
18
|
`):process.stderr.write(`[${m()}] ERROR: ${t}
|
|
19
|
-
`))}function k(t){if(t==null)return"";if(t instanceof Error)return t.message;if(typeof t=="string")return t;try{return JSON.stringify(t)}catch{return String(t)}}var b=class extends Error{statusCode;body;retryAfterMs;requestId;cfRay;constructor(e,n={}){super(e),this.name="ApiTransientError",this.statusCode=n.statusCode,this.retryAfterMs=n.retryAfterMs,this.requestId=n.requestId,this.cfRay=n.cfRay}},A={maxRetries:3,baseDelayMs:1e3,maxDelayMs:3e4,jitterMs:300};function M(t,e){let n=process.env[t],r=n?Number.parseInt(n,10):Number.NaN;return!Number.isFinite(r)||r<0?e:r}function ye(t={}){let e=Math.max(0,t.maxRetries??M("XENO_API_MAX_RETRIES",A.maxRetries)),n=Math.max(50,t.baseDelayMs??M("XENO_API_BASE_DELAY_MS",A.baseDelayMs)),r=Math.max(n,t.maxDelayMs??M("XENO_API_MAX_DELAY_MS",A.maxDelayMs)),o=Math.max(0,t.jitterMs??M("XENO_API_RETRY_JITTER_MS",A.jitterMs));return{maxRetries:e,baseDelayMs:n,maxDelayMs:r,jitterMs:o}}function we(t,e,n){if(e.retryAfterMs&&e.retryAfterMs>0)return Math.min(e.retryAfterMs,n.maxDelayMs);let r=Math.min(n.baseDelayMs*Math.pow(2,t),n.maxDelayMs),o=Math.floor(Math.random()*n.jitterMs);return Math.min(r+o,n.maxDelayMs)}function tt(t){let e=t.toLowerCase();return e.includes("rate limit")||e.includes("too many requests")||e.includes("429")}function be(t){let e=t.toLowerCase();return e.includes("network")||e.includes("timeout")||e.includes("fetch failed")||e.includes("socket hang up")||e.includes("econnreset")||e.includes("eai_again")||e.includes("enotfound")||e.includes("econnrefused")||e.includes("tls")||e.includes("temporarily unavailable")}function N(t){if(t instanceof b)return{statusCode:t.statusCode,retryAfterMs:t.retryAfterMs,requestId:t.requestId,cfRay:t.cfRay};if(!(t instanceof Error))return{};let e=t;if(e.statusCode!==void 0||e.retryAfterMs!==void 0||e.requestId!==void 0||e.cfRay!==void 0)return{statusCode:e.statusCode,retryAfterMs:e.retryAfterMs,requestId:e.requestId,cfRay:e.cfRay};let n=t.message.toLowerCase();return tt(n)?{statusCode:429}:{}}var $="408|425|429|500|502|503|504";function et(t){let e=new RegExp(`(?:\\bstatus(?:[ _-]?code)?\\b\\s*[=:]?\\s*|\\bhttp\\b\\s*|\\bapi\\b\\s*|\\bcode\\b\\s*[=:]\\s*|\\berror\\b\\s*)(?:${$})\\b`,"i"),n=new RegExp(`\\b(?:${$})\\s+(?:internal|bad\\s+gateway|service\\s+unavailable|gateway\\s+time|request\\s+time|too\\s+early|too\\s+many)`,"i"),r=new RegExp(`^\\s*(?:${$})\\b`);return e.test(t)||n.test(t)||r.test(t)}function nt(t){if(t&&typeof t=="object"&&"retryable"in t)return t.retryable===!0;if(t instanceof b){let{statusCode:e}=N(t);if(e)return e===429||e>=500||e===408||e===409||e===425}if(t instanceof Error){let e=t.name?.toLowerCase()??"";return e==="aborterror"||e==="agentinterruptederror"||t.message.toLowerCase().includes("aborted")||t.message.toLowerCase().includes("interrupted")?!1:et(t.message)?!0:tt(t.message)||be(t.message.toLowerCase())}return!1}function Ee(t){if(t.onAbort)return t.onAbort();let e=new Error("The operation was aborted");return e.name="AbortError",e}async function Re(t,e={}){let n=ye(e),r;for(let o=0;o<=n.maxRetries;o++)try{if(e.signal?.aborted)throw Ee(e);return e.onBeforeAttempt?.(o),await t()}catch(i){if(r=i,!(e.shouldRetry?e.shouldRetry(i,o):nt(i))||o===n.maxRetries)throw i;let u=N(i),l=we(o,u,n),d=e.getDelayMs?.(i,o,l),g=typeof d=="number"&&d>=0?d:l;await new Promise(_=>setTimeout(_,g))}throw r}var rt=(t,e)=>{if(!t)return 0;let n=e.toLowerCase(),r=n.includes("claude")?3.5:n.includes("gemini")?3.8:(/(^|[/_-])(gpt|o\d)/.test(n),4),o=[...t].filter(s=>s.codePointAt(0)>127).length,i=Math.ceil(t.length/r);return Math.max(1,i+Math.ceil(o*.35))},ot=Object.freeze({id:"xeno-conservative-v1",source:"estimated",countText:rt,countImage:({detail:t})=>t==="high"?2e3:t==="low"?512:1200,safetyMarginRatio:t=>{let e=t.toLowerCase();return e.includes("claude")?.12:e.includes("gemini")?.14:/(^|[/_-])(gpt|o\d)/.test(e)?.1:.18}});function Te(t,e,n=ot){return{tokens:Math.max(0,Math.ceil(n.countText(t,e))),source:n.source,adapterId:n.id}}function it(t){return t?Math.ceil(t.length/4):0}function ke(t,e){if(!t||e<=0)return"";let n=e*4;if(t.length<=n)return t;let r=t.slice(0,n),o=r.lastIndexOf(" ");return o>n*.8&&(r=r.slice(0,o)),r+"..."}function Ae(t,e){return it(t)<=e}function Me(t,e){return Math.max(0,e-t)}var Se={"claude-opus-4-6-thinking":{input:15,output:75},"claude-opus-4-6":{input:15,output:75},"claude-opus-4-5-thinking":{input:15,output:75},"claude-sonnet-4-6":{input:3,output:15},"claude-sonnet-4-5-thinking":{input:3,output:15},"claude-sonnet-4-5":{input:3,output:15},"gemini-2.5-flash":{input:.15,output:.6},"gemini-2.5-flash-lite":{input:.075,output:.3},"gemini-3-flash":{input:.15,output:.6},"gemini-3-pro-high":{input:1.25,output:5},"gpt-5":{input:5,output:15},"gpt-5-codex":{input:5,output:15},"gpt-5.1":{input:5,output:15},"gpt-5.1-codex":{input:5,output:15},"gpt-5.2":{input:5,output:15},"gpt-5.2-codex":{input:5,output:15},"kimi-k2":{input:.6,output:2.4},"kimi-k2-thinking":{input:.6,output:2.4},"kimi-k2.5":{input:.6,output:2.4}};function _e(t,e,n){let r=Se[t];return r?e/1e6*r.input+n/1e6*r.output:0}function Ce(t){return t<=0?"$0.00":t<.001?"<$0.001":t<.01?`$${t.toFixed(4)}`:t<1?`$${t.toFixed(3)}`:`$${t.toFixed(2)}`}var st=require("node:child_process");function $e(t){let e=process.platform==="win32"?[{command:"clip.exe",args:[]}]:process.platform==="darwin"?[{command:"pbcopy",args:[]}]:[{command:"wl-copy",args:[]},{command:"xclip",args:["-selection","clipboard"]},{command:"xsel",args:["--clipboard","--input"]}],n=null;for(let r of e)try{let o=(0,st.spawnSync)(r.command,r.args,{input:t,encoding:"utf8"});if(o.error){n=o.error.message;continue}if(o.status===0)return;n=o.stderr||o.stdout||`exit ${o.status}`}catch(o){n=o instanceof Error?o.message:String(o)}throw new Error(`Clipboard copy failed${n?`: ${n}`:""}`)}function ut(t){return t.replace(/\\/g,"/").toLowerCase()}var Ne=["golden","solution","answer","expected"],ve=["expected","golden","reference","answer","answers"],Oe=new Set([";","&&","||","|"]);function ct(t){return ut(t).replace(/^\.\/+/,"").split("/").map(e=>e.trim()).filter(e=>e.length>0)}function Le(t){return Ne.some(e=>t.includes(e))}function at(t){return ve.some(e=>t.includes(e))}function lt(t){return t.split("::",1)[0]?.split("?",1)[0]?.split("#",1)[0]??t}function S(t){let e=t.trim().replace(/^[({]+/,"").replace(/[),;]+$/,"");return(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))&&(e=e.slice(1,-1)),e}function Be(t){return t.match(/"[^"]*"|'[^']*'|&&|\|\||[;|]|[^\s;|&]+/g)?.map(S).filter(e=>e.length>0)??[]}function ft(t){let e=ct(t),n=lt(e.at(-1)??"");return at(n)||e.some(r=>at(r))}function dt(t){let e=ut(S(t));return!e||e==="/dev/null"||e.startsWith("/tmp/")||e.startsWith("tmp/")||e.startsWith("/var/tmp/")||e.startsWith("var/tmp/")?!1:e.startsWith("/app/")||e.startsWith("./")?!0:!e.startsWith("/")}function Pe(t){return/[\\/]/.test(t)||/\.[A-Za-z0-9]{1,8}$/.test(t)}function De(t){let e=Be(t);for(let n=0;n<e.length;n+=1){let r=e[n]?.toLowerCase();if(r!=="cp"&&r!=="mv"&&r!=="rsync"&&r!=="install")continue;let o=[];for(let s=n+1;s<e.length;s+=1){let u=e[s];if(!u||Oe.has(u))break;u!=="--"&&(u.startsWith("-")||o.push(u))}if(o.length<2)continue;let i=o.at(-1);if(dt(i)){for(let s of o.slice(0,-1))if(Pe(s)&&ft(s))return{sourcePath:s,destinationPath:i,operation:r}}}return null}function Ie(t){let e=[/\bcat\s+(?:"([^"]+)"|'([^']+)'|([^\s;&|]+))\s*>\s*(?:"([^"]+)"|'([^']+)'|([^\s;&|]+))/i,/\bdd\b[\s\S]*?\bif=(?:"([^"]+)"|'([^']+)'|([^\s;&|]+))[\s\S]*?\bof=(?:"([^"]+)"|'([^']+)'|([^\s;&|]+))/i];for(let n of e){let r=t.match(n);if(!r)continue;let o=S(r[1]??r[2]??r[3]??""),i=S(r[4]??r[5]??r[6]??"");if(!(!o||!i)&&ft(o)&&dt(i))return{sourcePath:o,destinationPath:i,operation:n.source.startsWith("\\bdd")?"dd":"redirect"}}return null}function v(){return process.env.XENO_BENCHMARK_MODE?.trim().toLowerCase()==="terminal-bench"}function O(t){let e=ct(t);if(e.includes("solution")||e.includes("xeno-audit")||e.includes(".xeno")&&e.includes("audit"))return!0;let n=lt(e.at(-1)??"");return e.includes("tests")&&Le(n)}function Fe(t){return v()?t.filter(e=>!O(e)):t}function We(t){return`Benchmark safety: access to verifier answer or benchmark trace artifacts is blocked (${t}). Use task inputs and verifier logic, not golden, solution, or agent audit files.`}function je(t){return t.split(/[\s"'`;|&]+/).map(e=>e.trim()).filter(e=>e.length>0&&/[\\/]/.test(e)).some(e=>O(e))}function qe(t){if(!v())return null;let e=De(t)??Ie(t);return e?["[xeno guidance]",`Benchmark safety blocked ${e.operation} from reference-like source ${e.sourcePath} to protected destination ${e.destinationPath}.`,"Do not copy expected, golden, reference, or answer files over task inputs or submission artifacts to make validation pass.","If a previous check polluted an input, restore/regenerate the original source input, then rerun the actual script or program under test."].join(`
|
|
20
|
-
`):null}function
|
|
19
|
+
`))}function A(t){if(t==null)return"";if(t instanceof Error)return t.message;if(typeof t=="string")return t;try{return JSON.stringify(t)}catch{return String(t)}}var ye=/^[A-Za-z0-9:._*-]{1,64}$/,we=/^[A-Za-z0-9_-][A-Za-z0-9 _-]{0,30}[A-Za-z0-9_-]$/,be=/^[0-9][0-9A-Za-z.+-]{0,40}$/;function Ee(t){if(!t||typeof t!="object")throw new TypeError("requestContext must be an object");let e=Object.keys(t).filter(r=>r!=="surface"&&r!=="client");if(e.length>0)throw new TypeError(`requestContext does not accept: ${e.join(", ")}`);if(typeof t.surface!="string"||!ye.test(t.surface))throw new TypeError("requestContext.surface must match /^[A-Za-z0-9:._*-]{1,64}$/");if(t.client===void 0)return Object.freeze({surface:t.surface});let n=t.client;if(!n||typeof n!="object"||Object.keys(n).some(r=>r!=="name"&&r!=="version"))throw new TypeError("requestContext.client must be { name, version }");if(typeof n.name!="string"||!we.test(n.name))throw new TypeError("requestContext.client.name must be 2-32 characters of letters, digits, space, _ or -");if(typeof n.version!="string"||!be.test(n.version))throw new TypeError("requestContext.client.version must start with a digit, e.g. 1.2.3");return Object.freeze({surface:t.surface,client:Object.freeze({name:n.name,version:n.version})})}function Re(t){return t?{"X-Xeno-Surface":t.surface,...t.client?{"X-Xeno-Client":`${t.client.name}/${t.client.version}`}:{}}:{}}var b=class extends Error{statusCode;body;retryAfterMs;requestId;cfRay;constructor(e,n={}){super(e),this.name="ApiTransientError",this.statusCode=n.statusCode,this.retryAfterMs=n.retryAfterMs,this.requestId=n.requestId,this.cfRay=n.cfRay}},C={maxRetries:3,baseDelayMs:1e3,maxDelayMs:3e4,jitterMs:300};function k(t,e){let n=process.env[t],r=n?Number.parseInt(n,10):Number.NaN;return!Number.isFinite(r)||r<0?e:r}function Te(t={}){let e=Math.max(0,t.maxRetries??k("XENO_API_MAX_RETRIES",C.maxRetries)),n=Math.max(50,t.baseDelayMs??k("XENO_API_BASE_DELAY_MS",C.baseDelayMs)),r=Math.max(n,t.maxDelayMs??k("XENO_API_MAX_DELAY_MS",C.maxDelayMs)),o=Math.max(0,t.jitterMs??k("XENO_API_RETRY_JITTER_MS",C.jitterMs));return{maxRetries:e,baseDelayMs:n,maxDelayMs:r,jitterMs:o}}function Ae(t,e,n){if(e.retryAfterMs&&e.retryAfterMs>0)return Math.min(e.retryAfterMs,n.maxDelayMs);let r=Math.min(n.baseDelayMs*Math.pow(2,t),n.maxDelayMs),o=Math.floor(Math.random()*n.jitterMs);return Math.min(r+o,n.maxDelayMs)}function tt(t){let e=t.toLowerCase();return e.includes("rate limit")||e.includes("too many requests")||e.includes("429")}function Ce(t){let e=t.toLowerCase();return e.includes("network")||e.includes("timeout")||e.includes("fetch failed")||e.includes("socket hang up")||e.includes("econnreset")||e.includes("eai_again")||e.includes("enotfound")||e.includes("econnrefused")||e.includes("tls")||e.includes("temporarily unavailable")}function N(t){if(t instanceof b)return{statusCode:t.statusCode,retryAfterMs:t.retryAfterMs,requestId:t.requestId,cfRay:t.cfRay};if(!(t instanceof Error))return{};let e=t;if(e.statusCode!==void 0||e.retryAfterMs!==void 0||e.requestId!==void 0||e.cfRay!==void 0)return{statusCode:e.statusCode,retryAfterMs:e.retryAfterMs,requestId:e.requestId,cfRay:e.cfRay};let n=t.message.toLowerCase();return tt(n)?{statusCode:429}:{}}var $="408|425|429|500|502|503|504";function et(t){let e=new RegExp(`(?:\\bstatus(?:[ _-]?code)?\\b\\s*[=:]?\\s*|\\bhttp\\b\\s*|\\bapi\\b\\s*|\\bcode\\b\\s*[=:]\\s*|\\berror\\b\\s*)(?:${$})\\b`,"i"),n=new RegExp(`\\b(?:${$})\\s+(?:internal|bad\\s+gateway|service\\s+unavailable|gateway\\s+time|request\\s+time|too\\s+early|too\\s+many)`,"i"),r=new RegExp(`^\\s*(?:${$})\\b`);return e.test(t)||n.test(t)||r.test(t)}function nt(t){if(t&&typeof t=="object"&&"retryable"in t)return t.retryable===!0;if(t instanceof b){let{statusCode:e}=N(t);if(e)return e===429||e>=500||e===408||e===409||e===425}if(t instanceof Error){let e=t.name?.toLowerCase()??"";return e==="aborterror"||e==="agentinterruptederror"||t.message.toLowerCase().includes("aborted")||t.message.toLowerCase().includes("interrupted")?!1:et(t.message)?!0:tt(t.message)||Ce(t.message.toLowerCase())}return!1}function ke(t){if(t.onAbort)return t.onAbort();let e=new Error("The operation was aborted");return e.name="AbortError",e}async function Me(t,e={}){let n=Te(e),r;for(let o=0;o<=n.maxRetries;o++)try{if(e.signal?.aborted)throw ke(e);return e.onBeforeAttempt?.(o),await t()}catch(i){if(r=i,!(e.shouldRetry?e.shouldRetry(i,o):nt(i))||o===n.maxRetries)throw i;let u=N(i),f=Ae(o,u,n),d=e.getDelayMs?.(i,o,f),g=typeof d=="number"&&d>=0?d:f;await new Promise(_=>setTimeout(_,g))}throw r}var rt=(t,e)=>{if(!t)return 0;let n=e.toLowerCase(),r=n.includes("claude")?3.5:n.includes("gemini")?3.8:(/(^|[/_-])(gpt|o\d)/.test(n),4),o=[...t].filter(s=>s.codePointAt(0)>127).length,i=Math.ceil(t.length/r);return Math.max(1,i+Math.ceil(o*.35))},ot=Object.freeze({id:"xeno-conservative-v1",source:"estimated",countText:rt,countImage:({detail:t})=>t==="high"?2e3:t==="low"?512:1200,safetyMarginRatio:t=>{let e=t.toLowerCase();return e.includes("claude")?.12:e.includes("gemini")?.14:/(^|[/_-])(gpt|o\d)/.test(e)?.1:.18}});function _e(t,e,n=ot){return{tokens:Math.max(0,Math.ceil(n.countText(t,e))),source:n.source,adapterId:n.id}}function it(t){return t?Math.ceil(t.length/4):0}function Se(t,e){if(!t||e<=0)return"";let n=e*4;if(t.length<=n)return t;let r=t.slice(0,n),o=r.lastIndexOf(" ");return o>n*.8&&(r=r.slice(0,o)),r+"..."}function $e(t,e){return it(t)<=e}function Ne(t,e){return Math.max(0,e-t)}var ve={"claude-opus-4-6-thinking":{input:15,output:75},"claude-opus-4-6":{input:15,output:75},"claude-opus-4-5-thinking":{input:15,output:75},"claude-sonnet-4-6":{input:3,output:15},"claude-sonnet-4-5-thinking":{input:3,output:15},"claude-sonnet-4-5":{input:3,output:15},"gemini-2.5-flash":{input:.15,output:.6},"gemini-2.5-flash-lite":{input:.075,output:.3},"gemini-3-flash":{input:.15,output:.6},"gemini-3-pro-high":{input:1.25,output:5},"gpt-5":{input:5,output:15},"gpt-5-codex":{input:5,output:15},"gpt-5.1":{input:5,output:15},"gpt-5.1-codex":{input:5,output:15},"gpt-5.2":{input:5,output:15},"gpt-5.2-codex":{input:5,output:15},"kimi-k2":{input:.6,output:2.4},"kimi-k2-thinking":{input:.6,output:2.4},"kimi-k2.5":{input:.6,output:2.4}};function Oe(t,e,n){let r=ve[t];return r?e/1e6*r.input+n/1e6*r.output:0}function Le(t){return t<=0?"$0.00":t<.001?"<$0.001":t<.01?`$${t.toFixed(4)}`:t<1?`$${t.toFixed(3)}`:`$${t.toFixed(2)}`}var st=require("node:child_process");function Be(t){let e=process.platform==="win32"?[{command:"clip.exe",args:[]}]:process.platform==="darwin"?[{command:"pbcopy",args:[]}]:[{command:"wl-copy",args:[]},{command:"xclip",args:["-selection","clipboard"]},{command:"xsel",args:["--clipboard","--input"]}],n=null;for(let r of e)try{let o=(0,st.spawnSync)(r.command,r.args,{input:t,encoding:"utf8"});if(o.error){n=o.error.message;continue}if(o.status===0)return;n=o.stderr||o.stdout||`exit ${o.status}`}catch(o){n=o instanceof Error?o.message:String(o)}throw new Error(`Clipboard copy failed${n?`: ${n}`:""}`)}function ut(t){return t.replace(/\\/g,"/").toLowerCase()}var Pe=["golden","solution","answer","expected"],Ie=["expected","golden","reference","answer","answers"],De=new Set([";","&&","||","|"]);function ct(t){return ut(t).replace(/^\.\/+/,"").split("/").map(e=>e.trim()).filter(e=>e.length>0)}function Fe(t){return Pe.some(e=>t.includes(e))}function at(t){return Ie.some(e=>t.includes(e))}function ft(t){return t.split("::",1)[0]?.split("?",1)[0]?.split("#",1)[0]??t}function M(t){let e=t.trim().replace(/^[({]+/,"").replace(/[),;]+$/,"");return(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))&&(e=e.slice(1,-1)),e}function je(t){return t.match(/"[^"]*"|'[^']*'|&&|\|\||[;|]|[^\s;|&]+/g)?.map(M).filter(e=>e.length>0)??[]}function lt(t){let e=ct(t),n=ft(e.at(-1)??"");return at(n)||e.some(r=>at(r))}function dt(t){let e=ut(M(t));return!e||e==="/dev/null"||e.startsWith("/tmp/")||e.startsWith("tmp/")||e.startsWith("/var/tmp/")||e.startsWith("var/tmp/")?!1:e.startsWith("/app/")||e.startsWith("./")?!0:!e.startsWith("/")}function We(t){return/[\\/]/.test(t)||/\.[A-Za-z0-9]{1,8}$/.test(t)}function qe(t){let e=je(t);for(let n=0;n<e.length;n+=1){let r=e[n]?.toLowerCase();if(r!=="cp"&&r!=="mv"&&r!=="rsync"&&r!=="install")continue;let o=[];for(let s=n+1;s<e.length;s+=1){let u=e[s];if(!u||De.has(u))break;u!=="--"&&(u.startsWith("-")||o.push(u))}if(o.length<2)continue;let i=o.at(-1);if(dt(i)){for(let s of o.slice(0,-1))if(We(s)&<(s))return{sourcePath:s,destinationPath:i,operation:r}}}return null}function Xe(t){let e=[/\bcat\s+(?:"([^"]+)"|'([^']+)'|([^\s;&|]+))\s*>\s*(?:"([^"]+)"|'([^']+)'|([^\s;&|]+))/i,/\bdd\b[\s\S]*?\bif=(?:"([^"]+)"|'([^']+)'|([^\s;&|]+))[\s\S]*?\bof=(?:"([^"]+)"|'([^']+)'|([^\s;&|]+))/i];for(let n of e){let r=t.match(n);if(!r)continue;let o=M(r[1]??r[2]??r[3]??""),i=M(r[4]??r[5]??r[6]??"");if(!(!o||!i)&<(o)&&dt(i))return{sourcePath:o,destinationPath:i,operation:n.source.startsWith("\\bdd")?"dd":"redirect"}}return null}function v(){return process.env.XENO_BENCHMARK_MODE?.trim().toLowerCase()==="terminal-bench"}function O(t){let e=ct(t);if(e.includes("solution")||e.includes("xeno-audit")||e.includes(".xeno")&&e.includes("audit"))return!0;let n=ft(e.at(-1)??"");return e.includes("tests")&&Fe(n)}function ze(t){return v()?t.filter(e=>!O(e)):t}function He(t){return`Benchmark safety: access to verifier answer or benchmark trace artifacts is blocked (${t}). Use task inputs and verifier logic, not golden, solution, or agent audit files.`}function Je(t){return t.split(/[\s"'`;|&]+/).map(e=>e.trim()).filter(e=>e.length>0&&/[\\/]/.test(e)).some(e=>O(e))}function Ye(t){if(!v())return null;let e=qe(t)??Xe(t);return e?["[xeno guidance]",`Benchmark safety blocked ${e.operation} from reference-like source ${e.sourcePath} to protected destination ${e.destinationPath}.`,"Do not copy expected, golden, reference, or answer files over task inputs or submission artifacts to make validation pass.","If a previous check polluted an input, restore/regenerate the original source input, then rerun the actual script or program under test."].join(`
|
|
20
|
+
`):null}function Ue(t){return/^data:([^;,]+)[;,]/i.exec(t.trim())?.[1]}function pt(t){let e=[];for(let n of t){if(n.type==="text"){e.push(n.text);continue}if(n.type==="image_url"){e.push(`[image ${Ue(n.image_url.url)??"unknown"}]`);continue}let r=n.text??n.data;if(r&&r.trim().length>0){e.push(r);continue}let o=n.uri??n.mimeType??"resource";e.push(`[resource ${o}]`)}return e.join(`
|
|
21
21
|
|
|
22
|
-
`).trim()}function mt(t){let e=t.trim();return e.length>0?[{type:"text",text:e}]:[]}function
|
|
23
|
-
`)}function
|
|
24
|
-
`)}}function
|
|
22
|
+
`).trim()}function mt(t){let e=t.trim();return e.length>0?[{type:"text",text:e}]:[]}function Ge(t){return typeof t=="string"?t:pt(t)}function gt(t){if(t.success)return t.output;let e=[`Error: ${t.error??"Tool execution failed"}`];return t.output.trim().length>0&&e.push(t.output),e.join(`
|
|
23
|
+
`)}function Ke(t){let e=t.assistant_content&&t.assistant_content.length>0?t.assistant_content:typeof t.content=="string"?mt(t.content):t.content,n=t.assistant_only_content??[],r=Ze(t),o=[...e,...n,...r?[r]:[]];return o.length>0?o:t.content}function Ze(t){let e=t.operation;if(!e)return null;let n=t.evidence??e.evidence??[],r=n.filter(i=>i.status==="verified").length,o=n.filter(i=>i.status==="failed").length;return{type:"text",text:["[xeno_operation]",`operation_id: ${e.operationId}`,`state: ${e.state}`,`terminal: ${e.terminal?"yes":"no"}`,`completion_policy: ${e.completionPolicy}`,e.taskId?`task_id: ${e.taskId}`:null,e.completionReason?`completion_reason: ${e.completionReason}`:null,`evidence: ${r} verified, ${o} failed`,t.retryable===void 0?null:`retryable: ${t.retryable?"yes":"no"}`,"[/xeno_operation]"].filter(i=>!!i).join(`
|
|
24
|
+
`)}}function Qe(t){return Array.isArray(t)&&t.some(e=>e.type!=="text")}function Ve(t){return typeof t=="string"?mt(t):t}function tn(t,e){return{type:"tool_result",tool_use_id:t,content:gt(e),...e.assistantContent&&e.assistantContent.length>0?{assistant_content:e.assistantContent}:{},...e.assistantOnlyContent&&e.assistantOnlyContent.length>0?{assistant_only_content:e.assistantOnlyContent}:{},is_error:!e.success,...e.operation?{operation:e.operation}:{},...e.evidence&&e.evidence.length>0?{evidence:e.evidence}:{},...e.webContext?{web_context:e.webContext}:{},...e.retryable!==void 0?{retryable:e.retryable}:{}}}function en(t,e={}){for(let n of t){let r=n.codePointAt(0);if(r===127)return!0;if(!(r>31)&&!(r===9&&e.allowTab===!0)&&!((r===10||r===13)&&e.allowLineBreaks===!0))return!0}return!1}0&&(module.exports={ApiTransientError,HOME_DIR,IS_LINUX,IS_MAC,IS_WINDOWS,LogLevel,OS_VERSION,PLATFORM,accountTextTokens,appendDurableLine,appendLine,benchmarkLeakError,buildToolResultBlock,buildToolResultText,calculateCost,commandMentionsBenchmarkLeak,conservativeTokenAccountingAdapter,copyTextToClipboard,createSafeRegex,debug,decodeTextBuffer,deleteDir,deleteFile,detectLineEnding,detectPreferredLineEnding,detectTextEncoding,encodeTextBuffer,ensureDir,error,estimateTokens,estimateTokensForModel,existsSync,filterBenchmarkLeakPaths,findSimilarFile,fitsInBudget,formatCost,getAgentHome,getBenchmarkReferenceOverwriteHint,getBoolean,getConfigDir,getLogLevel,getNumber,getProjectConfigDir,getRetryErrorContext,getShellName,getString,getToolResultTransportContent,hasDir,hasDisallowedAsciiControlCharacter,hasFile,hasFrontmatter,hasNonTextToolResultContent,hasTransientStatusMention,info,isBenchmarkLeakPath,isBenchmarkMode,isGitRepo,isPathSafe,isRetryableError,listDirs,listFiles,normalizeLineEndings,normalizeXenoRequestContext,parseDocument,parseJsonLines,readFileSafe,readIfExists,readTextFile,remainingBudget,renameReplacingWithRetry,safeJsonParse,safeJsonStringify,safeRegexTest,safeResolvePath,setLogLevel,stringifyDocument,toTransportAssistantBlocks,toolAssistantContentToText,toolResultContentToText,truncateToTokens,validateRegexPattern,validateRequired,warn,withRetry,writeAtomic,writeTextFile,xenoRequestContextHeaders});
|
package/dist/utils/index.d.cts
CHANGED
|
@@ -76,6 +76,15 @@ declare function debug(msg: string, data?: unknown): void;
|
|
|
76
76
|
declare function info(msg: string, data?: unknown): void;
|
|
77
77
|
declare function warn(msg: string, data?: unknown): void;
|
|
78
78
|
declare function error(msg: string, data?: unknown): void;
|
|
79
|
+
interface XenoRequestContext {
|
|
80
|
+
readonly surface: string;
|
|
81
|
+
readonly client?: {
|
|
82
|
+
readonly name: string;
|
|
83
|
+
readonly version: string;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
declare function normalizeXenoRequestContext(context: XenoRequestContext): Readonly<XenoRequestContext>;
|
|
87
|
+
declare function xenoRequestContextHeaders(context: Readonly<XenoRequestContext> | undefined): Record<string, string>;
|
|
79
88
|
interface RetryOptions {
|
|
80
89
|
maxRetries?: number;
|
|
81
90
|
baseDelayMs?: number;
|
|
@@ -287,4 +296,4 @@ interface XenoAsciiControlCharacterPolicy {
|
|
|
287
296
|
allowLineBreaks?: boolean;
|
|
288
297
|
}
|
|
289
298
|
declare function hasDisallowedAsciiControlCharacter(value: string, policy?: XenoAsciiControlCharacterPolicy): boolean;
|
|
290
|
-
export { ApiTransientError, HOME_DIR, IS_LINUX, IS_MAC, IS_WINDOWS, type LineEnding, LogLevel, OS_VERSION, PLATFORM, type ParsedDocument, type RetryErrorContext, type RetryOptions, type TextEncoding, type TextFileContents, type TokenAccountingAdapter, type TokenAccountingResult, type TokenAccountingSource, type TokenEstimator, type XenoAsciiControlCharacterPolicy, accountTextTokens, appendDurableLine, appendLine, benchmarkLeakError, buildToolResultBlock, buildToolResultText, calculateCost, commandMentionsBenchmarkLeak, conservativeTokenAccountingAdapter, copyTextToClipboard, createSafeRegex, debug, decodeTextBuffer, deleteDir, deleteFile, detectLineEnding, detectPreferredLineEnding, detectTextEncoding, encodeTextBuffer, ensureDir, error, estimateTokens, estimateTokensForModel, existsSync, filterBenchmarkLeakPaths, findSimilarFile, fitsInBudget, formatCost, getAgentHome, getBenchmarkReferenceOverwriteHint, getBoolean, getConfigDir, getLogLevel, getNumber, getProjectConfigDir, getRetryErrorContext, getShellName, getString, getToolResultTransportContent, hasDir, hasDisallowedAsciiControlCharacter, hasFile, hasFrontmatter, hasNonTextToolResultContent, hasTransientStatusMention, info, isBenchmarkLeakPath, isBenchmarkMode, isGitRepo, isPathSafe, isRetryableError, listDirs, listFiles, normalizeLineEndings, parseDocument, parseJsonLines, readFileSafe, readIfExists, readTextFile, remainingBudget, renameReplacingWithRetry, safeJsonParse, safeJsonStringify, safeRegexTest, safeResolvePath, setLogLevel, stringifyDocument, toTransportAssistantBlocks, toolAssistantContentToText, toolResultContentToText, truncateToTokens, validateRegexPattern, validateRequired, warn, withRetry, writeAtomic, writeTextFile };
|
|
299
|
+
export { ApiTransientError, HOME_DIR, IS_LINUX, IS_MAC, IS_WINDOWS, type LineEnding, LogLevel, OS_VERSION, PLATFORM, type ParsedDocument, type RetryErrorContext, type RetryOptions, type TextEncoding, type TextFileContents, type TokenAccountingAdapter, type TokenAccountingResult, type TokenAccountingSource, type TokenEstimator, type XenoAsciiControlCharacterPolicy, type XenoRequestContext, accountTextTokens, appendDurableLine, appendLine, benchmarkLeakError, buildToolResultBlock, buildToolResultText, calculateCost, commandMentionsBenchmarkLeak, conservativeTokenAccountingAdapter, copyTextToClipboard, createSafeRegex, debug, decodeTextBuffer, deleteDir, deleteFile, detectLineEnding, detectPreferredLineEnding, detectTextEncoding, encodeTextBuffer, ensureDir, error, estimateTokens, estimateTokensForModel, existsSync, filterBenchmarkLeakPaths, findSimilarFile, fitsInBudget, formatCost, getAgentHome, getBenchmarkReferenceOverwriteHint, getBoolean, getConfigDir, getLogLevel, getNumber, getProjectConfigDir, getRetryErrorContext, getShellName, getString, getToolResultTransportContent, hasDir, hasDisallowedAsciiControlCharacter, hasFile, hasFrontmatter, hasNonTextToolResultContent, hasTransientStatusMention, info, isBenchmarkLeakPath, isBenchmarkMode, isGitRepo, isPathSafe, isRetryableError, listDirs, listFiles, normalizeLineEndings, normalizeXenoRequestContext, parseDocument, parseJsonLines, readFileSafe, readIfExists, readTextFile, remainingBudget, renameReplacingWithRetry, safeJsonParse, safeJsonStringify, safeRegexTest, safeResolvePath, setLogLevel, stringifyDocument, toTransportAssistantBlocks, toolAssistantContentToText, toolResultContentToText, truncateToTokens, validateRegexPattern, validateRequired, warn, withRetry, writeAtomic, writeTextFile, xenoRequestContextHeaders };
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -76,6 +76,15 @@ declare function debug(msg: string, data?: unknown): void;
|
|
|
76
76
|
declare function info(msg: string, data?: unknown): void;
|
|
77
77
|
declare function warn(msg: string, data?: unknown): void;
|
|
78
78
|
declare function error(msg: string, data?: unknown): void;
|
|
79
|
+
interface XenoRequestContext {
|
|
80
|
+
readonly surface: string;
|
|
81
|
+
readonly client?: {
|
|
82
|
+
readonly name: string;
|
|
83
|
+
readonly version: string;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
declare function normalizeXenoRequestContext(context: XenoRequestContext): Readonly<XenoRequestContext>;
|
|
87
|
+
declare function xenoRequestContextHeaders(context: Readonly<XenoRequestContext> | undefined): Record<string, string>;
|
|
79
88
|
interface RetryOptions {
|
|
80
89
|
maxRetries?: number;
|
|
81
90
|
baseDelayMs?: number;
|
|
@@ -287,4 +296,4 @@ interface XenoAsciiControlCharacterPolicy {
|
|
|
287
296
|
allowLineBreaks?: boolean;
|
|
288
297
|
}
|
|
289
298
|
declare function hasDisallowedAsciiControlCharacter(value: string, policy?: XenoAsciiControlCharacterPolicy): boolean;
|
|
290
|
-
export { ApiTransientError, HOME_DIR, IS_LINUX, IS_MAC, IS_WINDOWS, type LineEnding, LogLevel, OS_VERSION, PLATFORM, type ParsedDocument, type RetryErrorContext, type RetryOptions, type TextEncoding, type TextFileContents, type TokenAccountingAdapter, type TokenAccountingResult, type TokenAccountingSource, type TokenEstimator, type XenoAsciiControlCharacterPolicy, accountTextTokens, appendDurableLine, appendLine, benchmarkLeakError, buildToolResultBlock, buildToolResultText, calculateCost, commandMentionsBenchmarkLeak, conservativeTokenAccountingAdapter, copyTextToClipboard, createSafeRegex, debug, decodeTextBuffer, deleteDir, deleteFile, detectLineEnding, detectPreferredLineEnding, detectTextEncoding, encodeTextBuffer, ensureDir, error, estimateTokens, estimateTokensForModel, existsSync, filterBenchmarkLeakPaths, findSimilarFile, fitsInBudget, formatCost, getAgentHome, getBenchmarkReferenceOverwriteHint, getBoolean, getConfigDir, getLogLevel, getNumber, getProjectConfigDir, getRetryErrorContext, getShellName, getString, getToolResultTransportContent, hasDir, hasDisallowedAsciiControlCharacter, hasFile, hasFrontmatter, hasNonTextToolResultContent, hasTransientStatusMention, info, isBenchmarkLeakPath, isBenchmarkMode, isGitRepo, isPathSafe, isRetryableError, listDirs, listFiles, normalizeLineEndings, parseDocument, parseJsonLines, readFileSafe, readIfExists, readTextFile, remainingBudget, renameReplacingWithRetry, safeJsonParse, safeJsonStringify, safeRegexTest, safeResolvePath, setLogLevel, stringifyDocument, toTransportAssistantBlocks, toolAssistantContentToText, toolResultContentToText, truncateToTokens, validateRegexPattern, validateRequired, warn, withRetry, writeAtomic, writeTextFile };
|
|
299
|
+
export { ApiTransientError, HOME_DIR, IS_LINUX, IS_MAC, IS_WINDOWS, type LineEnding, LogLevel, OS_VERSION, PLATFORM, type ParsedDocument, type RetryErrorContext, type RetryOptions, type TextEncoding, type TextFileContents, type TokenAccountingAdapter, type TokenAccountingResult, type TokenAccountingSource, type TokenEstimator, type XenoAsciiControlCharacterPolicy, type XenoRequestContext, accountTextTokens, appendDurableLine, appendLine, benchmarkLeakError, buildToolResultBlock, buildToolResultText, calculateCost, commandMentionsBenchmarkLeak, conservativeTokenAccountingAdapter, copyTextToClipboard, createSafeRegex, debug, decodeTextBuffer, deleteDir, deleteFile, detectLineEnding, detectPreferredLineEnding, detectTextEncoding, encodeTextBuffer, ensureDir, error, estimateTokens, estimateTokensForModel, existsSync, filterBenchmarkLeakPaths, findSimilarFile, fitsInBudget, formatCost, getAgentHome, getBenchmarkReferenceOverwriteHint, getBoolean, getConfigDir, getLogLevel, getNumber, getProjectConfigDir, getRetryErrorContext, getShellName, getString, getToolResultTransportContent, hasDir, hasDisallowedAsciiControlCharacter, hasFile, hasFrontmatter, hasNonTextToolResultContent, hasTransientStatusMention, info, isBenchmarkLeakPath, isBenchmarkMode, isGitRepo, isPathSafe, isRetryableError, listDirs, listFiles, normalizeLineEndings, normalizeXenoRequestContext, parseDocument, parseJsonLines, readFileSafe, readIfExists, readTextFile, remainingBudget, renameReplacingWithRetry, safeJsonParse, safeJsonStringify, safeRegexTest, safeResolvePath, setLogLevel, stringifyDocument, toTransportAssistantBlocks, toolAssistantContentToText, toolResultContentToText, truncateToTokens, validateRegexPattern, validateRequired, warn, withRetry, writeAtomic, writeTextFile, xenoRequestContextHeaders };
|