@codemieai/code 0.0.24 → 0.0.25
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/README.md +35 -23
- package/dist/agents/codemie-code/config.d.ts.map +1 -1
- package/dist/agents/codemie-code/config.js +7 -3
- package/dist/agents/codemie-code/config.js.map +1 -1
- package/dist/agents/codemie-code/tools/index.d.ts.map +1 -1
- package/dist/agents/codemie-code/tools/index.js +6 -5
- package/dist/agents/codemie-code/tools/index.js.map +1 -1
- package/dist/agents/codemie-code/types.d.ts +4 -0
- package/dist/agents/codemie-code/types.d.ts.map +1 -1
- package/dist/agents/codemie-code/types.js.map +1 -1
- package/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +21 -0
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.d.ts +54 -3
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +134 -21
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/core/BaseMetricsAdapter.d.ts +88 -6
- package/dist/agents/core/BaseMetricsAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseMetricsAdapter.js +174 -16
- package/dist/agents/core/BaseMetricsAdapter.js.map +1 -1
- package/dist/agents/core/lifecycle-helpers.d.ts +111 -0
- package/dist/agents/core/lifecycle-helpers.d.ts.map +1 -0
- package/dist/agents/core/lifecycle-helpers.js +189 -0
- package/dist/agents/core/lifecycle-helpers.js.map +1 -0
- package/dist/agents/core/metrics/MetricsOrchestrator.d.ts.map +1 -0
- package/dist/{metrics → agents/core/metrics}/MetricsOrchestrator.js +76 -12
- package/dist/agents/core/metrics/MetricsOrchestrator.js.map +1 -0
- package/dist/agents/core/metrics/core/DeltaWriter.d.ts.map +1 -0
- package/dist/{metrics → agents/core/metrics}/core/DeltaWriter.js +3 -3
- package/dist/agents/core/metrics/core/DeltaWriter.js.map +1 -0
- package/dist/agents/core/metrics/core/FileSnapshotter.d.ts.map +1 -0
- package/dist/{metrics → agents/core/metrics}/core/FileSnapshotter.js +1 -1
- package/dist/agents/core/metrics/core/FileSnapshotter.js.map +1 -0
- package/dist/agents/core/metrics/core/SessionCorrelator.d.ts.map +1 -0
- package/dist/agents/core/metrics/core/SessionCorrelator.js +157 -0
- package/dist/agents/core/metrics/core/SessionCorrelator.js.map +1 -0
- package/dist/agents/core/metrics/core/SyncStateManager.d.ts.map +1 -0
- package/dist/{metrics → agents/core/metrics}/core/SyncStateManager.js +2 -2
- package/dist/agents/core/metrics/core/SyncStateManager.js.map +1 -0
- package/dist/agents/core/metrics/index.d.ts.map +1 -0
- package/dist/agents/core/metrics/index.js.map +1 -0
- package/dist/agents/core/metrics/session/SessionStore.d.ts.map +1 -0
- package/dist/{metrics → agents/core/metrics}/session/SessionStore.js +3 -3
- package/dist/agents/core/metrics/session/SessionStore.js.map +1 -0
- package/dist/agents/core/metrics/types.d.ts.map +1 -0
- package/dist/agents/core/metrics/types.js.map +1 -0
- package/dist/{metrics/config.d.ts → agents/core/metrics-config.d.ts} +1 -1
- package/dist/agents/core/metrics-config.d.ts.map +1 -0
- package/dist/{metrics/config.js → agents/core/metrics-config.js} +5 -3
- package/dist/agents/core/metrics-config.js.map +1 -0
- package/dist/agents/core/types.d.ts +112 -6
- package/dist/agents/core/types.d.ts.map +1 -1
- package/dist/agents/plugins/claude.metrics.d.ts +4 -2
- package/dist/agents/plugins/claude.metrics.d.ts.map +1 -1
- package/dist/agents/plugins/claude.metrics.js +33 -11
- package/dist/agents/plugins/claude.metrics.js.map +1 -1
- package/dist/agents/plugins/claude.plugin.d.ts +1 -1
- package/dist/agents/plugins/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude.plugin.js +3 -33
- package/dist/agents/plugins/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/codemie-code.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/codemie-code.plugin.js +12 -5
- package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
- package/dist/agents/plugins/codex.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/codex.plugin.js +133 -33
- package/dist/agents/plugins/codex.plugin.js.map +1 -1
- package/dist/agents/plugins/gemini.metrics.d.ts +10 -3
- package/dist/agents/plugins/gemini.metrics.d.ts.map +1 -1
- package/dist/agents/plugins/gemini.metrics.js +69 -17
- package/dist/agents/plugins/gemini.metrics.js.map +1 -1
- package/dist/agents/plugins/gemini.plugin.d.ts +1 -1
- package/dist/agents/plugins/gemini.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/gemini.plugin.js +15 -24
- package/dist/agents/plugins/gemini.plugin.js.map +1 -1
- package/dist/agents/plugins/history-parser.d.ts +1 -1
- package/dist/agents/plugins/history-parser.d.ts.map +1 -1
- package/dist/cli/commands/analytics/data-loader.d.ts +1 -1
- package/dist/cli/commands/analytics/data-loader.d.ts.map +1 -1
- package/dist/cli/commands/analytics/types.d.ts +2 -2
- package/dist/cli/commands/analytics/types.d.ts.map +1 -1
- package/dist/cli/commands/analytics/types.js +1 -1
- package/dist/cli/commands/profile/auth.d.ts +5 -0
- package/dist/cli/commands/profile/auth.d.ts.map +1 -0
- package/dist/cli/commands/profile/auth.js +120 -0
- package/dist/cli/commands/profile/auth.js.map +1 -0
- package/dist/cli/commands/{profile.d.ts → profile/index.d.ts} +1 -1
- package/dist/cli/commands/profile/index.d.ts.map +1 -0
- package/dist/cli/commands/{profile.js → profile/index.js} +81 -46
- package/dist/cli/commands/profile/index.js.map +1 -0
- package/dist/cli/index.js +1 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/providers/core/auth-validation.d.ts +20 -0
- package/dist/providers/core/auth-validation.d.ts.map +1 -0
- package/dist/providers/core/auth-validation.js +27 -0
- package/dist/providers/core/auth-validation.js.map +1 -0
- package/dist/providers/core/types.d.ts +51 -0
- package/dist/providers/core/types.d.ts.map +1 -1
- package/dist/providers/plugins/sso/index.d.ts +3 -0
- package/dist/providers/plugins/sso/index.d.ts.map +1 -1
- package/dist/providers/plugins/sso/index.js +4 -0
- package/dist/providers/plugins/sso/index.js.map +1 -1
- package/dist/{metrics/sync/jsonl-writer.d.ts → providers/plugins/sso/metrics/sync/sso.jsonl-writer.d.ts} +2 -2
- package/dist/providers/plugins/sso/metrics/sync/sso.jsonl-writer.d.ts.map +1 -0
- package/dist/{metrics/sync/jsonl-writer.js → providers/plugins/sso/metrics/sync/sso.jsonl-writer.js} +2 -2
- package/dist/providers/plugins/sso/metrics/sync/sso.jsonl-writer.js.map +1 -0
- package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.d.ts +62 -0
- package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.d.ts.map +1 -0
- package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.js +157 -0
- package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.js.map +1 -0
- package/dist/{metrics/sync/aggregator.d.ts → providers/plugins/sso/metrics/sync/sso.metrics-aggregator.d.ts} +4 -4
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-aggregator.d.ts.map +1 -0
- package/dist/{metrics/sync/aggregator.js → providers/plugins/sso/metrics/sync/sso.metrics-aggregator.js} +5 -4
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-aggregator.js.map +1 -0
- package/dist/{metrics/sync/MetricsApiClient.d.ts → providers/plugins/sso/metrics/sync/sso.metrics-api-client.d.ts} +2 -2
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-api-client.d.ts.map +1 -0
- package/dist/{metrics/sync/MetricsApiClient.js → providers/plugins/sso/metrics/sync/sso.metrics-api-client.js} +9 -5
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-api-client.js.map +1 -0
- package/dist/{metrics/sync/post-processor.d.ts → providers/plugins/sso/metrics/sync/sso.metrics-post-processor.d.ts} +3 -3
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-post-processor.d.ts.map +1 -0
- package/dist/{metrics/sync/post-processor.js → providers/plugins/sso/metrics/sync/sso.metrics-post-processor.js} +3 -3
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-post-processor.js.map +1 -0
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sender.d.ts +104 -0
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sender.d.ts.map +1 -0
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sender.js +258 -0
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sender.js.map +1 -0
- package/dist/{proxy/plugins/metrics-sync.plugin.d.ts → providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.d.ts} +9 -6
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.d.ts.map +1 -0
- package/dist/{proxy/plugins/metrics-sync.plugin.js → providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.js} +42 -60
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.js.map +1 -0
- package/dist/{metrics/sync/types.d.ts → providers/plugins/sso/metrics/sync/sso.metrics-types.d.ts} +6 -2
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-types.d.ts.map +1 -0
- package/dist/{metrics/sync/types.js → providers/plugins/sso/metrics/sync/sso.metrics-types.js} +1 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-types.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/endpoint-blocker.plugin.d.ts.map +1 -0
- package/dist/{proxy → providers/plugins/sso/proxy}/plugins/endpoint-blocker.plugin.js +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/endpoint-blocker.plugin.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.d.ts.map +1 -0
- package/dist/{proxy → providers/plugins/sso/proxy}/plugins/header-injection.plugin.js +2 -2
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js.map +1 -0
- package/dist/{proxy → providers/plugins/sso/proxy}/plugins/index.d.ts +2 -2
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -0
- package/dist/{proxy → providers/plugins/sso/proxy}/plugins/index.js +4 -3
- package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/logging.plugin.d.ts.map +1 -0
- package/dist/{proxy → providers/plugins/sso/proxy}/plugins/logging.plugin.js +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/logging.plugin.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/registry.d.ts.map +1 -0
- package/dist/{proxy → providers/plugins/sso/proxy}/plugins/registry.js +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/registry.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/sso-auth.plugin.d.ts.map +1 -0
- package/dist/{proxy → providers/plugins/sso/proxy}/plugins/sso-auth.plugin.js +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/sso-auth.plugin.js.map +1 -0
- package/dist/{proxy → providers/plugins/sso/proxy}/plugins/types.d.ts +4 -4
- package/dist/providers/plugins/sso/proxy/plugins/types.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/types.js.map +1 -0
- package/dist/{proxy/errors.d.ts → providers/plugins/sso/proxy/proxy-errors.d.ts} +1 -1
- package/dist/providers/plugins/sso/proxy/proxy-errors.d.ts.map +1 -0
- package/dist/{proxy/errors.js → providers/plugins/sso/proxy/proxy-errors.js} +1 -1
- package/dist/providers/plugins/sso/proxy/proxy-errors.js.map +1 -0
- package/dist/{proxy/http-client.d.ts → providers/plugins/sso/proxy/proxy-http-client.d.ts} +1 -1
- package/dist/providers/plugins/sso/proxy/proxy-http-client.d.ts.map +1 -0
- package/dist/{proxy/http-client.js → providers/plugins/sso/proxy/proxy-http-client.js} +3 -3
- package/dist/providers/plugins/sso/proxy/proxy-http-client.js.map +1 -0
- package/dist/{proxy/types.d.ts → providers/plugins/sso/proxy/proxy-types.d.ts} +2 -2
- package/dist/providers/plugins/sso/proxy/proxy-types.d.ts.map +1 -0
- package/dist/{proxy/types.js → providers/plugins/sso/proxy/proxy-types.js} +1 -1
- package/dist/providers/plugins/sso/proxy/proxy-types.js.map +1 -0
- package/dist/{utils/codemie-proxy.d.ts → providers/plugins/sso/proxy/sso.proxy.d.ts} +3 -3
- package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts.map +1 -0
- package/dist/{utils/codemie-proxy.js → providers/plugins/sso/proxy/sso.proxy.js} +11 -11
- package/dist/providers/plugins/sso/proxy/sso.proxy.js.map +1 -0
- package/dist/providers/plugins/sso/sso.auth.d.ts +7 -3
- package/dist/providers/plugins/sso/sso.auth.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.auth.js +40 -7
- package/dist/providers/plugins/sso/sso.auth.js.map +1 -1
- package/dist/providers/plugins/sso/sso.health.js +3 -3
- package/dist/providers/plugins/sso/sso.health.js.map +1 -1
- package/dist/providers/plugins/sso/sso.models.js +1 -1
- package/dist/providers/plugins/sso/sso.models.js.map +1 -1
- package/dist/providers/plugins/sso/sso.setup-steps.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.setup-steps.js +116 -1
- package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -1
- package/dist/providers/plugins/sso/sso.template.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.template.js +51 -0
- package/dist/providers/plugins/sso/sso.template.js.map +1 -1
- package/dist/utils/credential-store.d.ts +9 -3
- package/dist/utils/credential-store.d.ts.map +1 -1
- package/dist/utils/credential-store.js +43 -18
- package/dist/utils/credential-store.js.map +1 -1
- package/dist/utils/exec.d.ts +1 -1
- package/dist/utils/exec.d.ts.map +1 -1
- package/dist/utils/exec.js +9 -5
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/first-time.js +1 -1
- package/dist/utils/first-time.js.map +1 -1
- package/dist/{metrics/utils → utils}/git.d.ts +1 -1
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/{metrics/utils → utils}/git.js +2 -2
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/npm.d.ts.map +1 -1
- package/dist/utils/npm.js +16 -5
- package/dist/utils/npm.js.map +1 -1
- package/dist/utils/path-utils.d.ts +195 -0
- package/dist/utils/path-utils.d.ts.map +1 -0
- package/dist/utils/path-utils.js +267 -0
- package/dist/utils/path-utils.js.map +1 -0
- package/dist/utils/profile-display.d.ts +41 -0
- package/dist/utils/profile-display.d.ts.map +1 -0
- package/dist/utils/profile-display.js +90 -0
- package/dist/utils/profile-display.js.map +1 -0
- package/dist/utils/profile.d.ts +12 -1
- package/dist/utils/profile.d.ts.map +1 -1
- package/dist/utils/profile.js +52 -9
- package/dist/utils/profile.js.map +1 -1
- package/dist/utils/which.d.ts.map +1 -1
- package/dist/utils/which.js +4 -2
- package/dist/utils/which.js.map +1 -1
- package/package.json +1 -1
- package/dist/cli/commands/auth.d.ts +0 -3
- package/dist/cli/commands/auth.d.ts.map +0 -1
- package/dist/cli/commands/auth.js +0 -184
- package/dist/cli/commands/auth.js.map +0 -1
- package/dist/cli/commands/profile.d.ts.map +0 -1
- package/dist/cli/commands/profile.js.map +0 -1
- package/dist/metrics/MetricsOrchestrator.d.ts.map +0 -1
- package/dist/metrics/MetricsOrchestrator.js.map +0 -1
- package/dist/metrics/config.d.ts.map +0 -1
- package/dist/metrics/config.js.map +0 -1
- package/dist/metrics/core/DeltaWriter.d.ts.map +0 -1
- package/dist/metrics/core/DeltaWriter.js.map +0 -1
- package/dist/metrics/core/FileSnapshotter.d.ts.map +0 -1
- package/dist/metrics/core/FileSnapshotter.js.map +0 -1
- package/dist/metrics/core/SessionCorrelator.d.ts.map +0 -1
- package/dist/metrics/core/SessionCorrelator.js +0 -115
- package/dist/metrics/core/SessionCorrelator.js.map +0 -1
- package/dist/metrics/core/SyncStateManager.d.ts.map +0 -1
- package/dist/metrics/core/SyncStateManager.js.map +0 -1
- package/dist/metrics/index.d.ts.map +0 -1
- package/dist/metrics/index.js.map +0 -1
- package/dist/metrics/session/SessionStore.d.ts.map +0 -1
- package/dist/metrics/session/SessionStore.js.map +0 -1
- package/dist/metrics/sync/MetricsApiClient.d.ts.map +0 -1
- package/dist/metrics/sync/MetricsApiClient.js.map +0 -1
- package/dist/metrics/sync/aggregator.d.ts.map +0 -1
- package/dist/metrics/sync/aggregator.js.map +0 -1
- package/dist/metrics/sync/index.d.ts +0 -10
- package/dist/metrics/sync/index.d.ts.map +0 -1
- package/dist/metrics/sync/index.js +0 -10
- package/dist/metrics/sync/index.js.map +0 -1
- package/dist/metrics/sync/jsonl-writer.d.ts.map +0 -1
- package/dist/metrics/sync/jsonl-writer.js.map +0 -1
- package/dist/metrics/sync/post-processor.d.ts.map +0 -1
- package/dist/metrics/sync/post-processor.js.map +0 -1
- package/dist/metrics/sync/types.d.ts.map +0 -1
- package/dist/metrics/sync/types.js.map +0 -1
- package/dist/metrics/types.d.ts.map +0 -1
- package/dist/metrics/types.js.map +0 -1
- package/dist/metrics/utils/git.d.ts.map +0 -1
- package/dist/metrics/utils/git.js.map +0 -1
- package/dist/proxy/errors.d.ts.map +0 -1
- package/dist/proxy/errors.js.map +0 -1
- package/dist/proxy/http-client.d.ts.map +0 -1
- package/dist/proxy/http-client.js.map +0 -1
- package/dist/proxy/plugins/endpoint-blocker.plugin.d.ts.map +0 -1
- package/dist/proxy/plugins/endpoint-blocker.plugin.js.map +0 -1
- package/dist/proxy/plugins/header-injection.plugin.d.ts.map +0 -1
- package/dist/proxy/plugins/header-injection.plugin.js.map +0 -1
- package/dist/proxy/plugins/index.d.ts.map +0 -1
- package/dist/proxy/plugins/index.js.map +0 -1
- package/dist/proxy/plugins/logging.plugin.d.ts.map +0 -1
- package/dist/proxy/plugins/logging.plugin.js.map +0 -1
- package/dist/proxy/plugins/metrics-sync.plugin.d.ts.map +0 -1
- package/dist/proxy/plugins/metrics-sync.plugin.js.map +0 -1
- package/dist/proxy/plugins/registry.d.ts.map +0 -1
- package/dist/proxy/plugins/registry.js.map +0 -1
- package/dist/proxy/plugins/sso-auth.plugin.d.ts.map +0 -1
- package/dist/proxy/plugins/sso-auth.plugin.js.map +0 -1
- package/dist/proxy/plugins/types.d.ts.map +0 -1
- package/dist/proxy/plugins/types.js.map +0 -1
- package/dist/proxy/types.d.ts.map +0 -1
- package/dist/proxy/types.js.map +0 -1
- package/dist/utils/codemie-proxy.d.ts.map +0 -1
- package/dist/utils/codemie-proxy.js.map +0 -1
- /package/dist/{metrics → agents/core/metrics}/MetricsOrchestrator.d.ts +0 -0
- /package/dist/{metrics → agents/core/metrics}/core/DeltaWriter.d.ts +0 -0
- /package/dist/{metrics → agents/core/metrics}/core/FileSnapshotter.d.ts +0 -0
- /package/dist/{metrics → agents/core/metrics}/core/SessionCorrelator.d.ts +0 -0
- /package/dist/{metrics → agents/core/metrics}/core/SyncStateManager.d.ts +0 -0
- /package/dist/{metrics → agents/core/metrics}/index.d.ts +0 -0
- /package/dist/{metrics → agents/core/metrics}/index.js +0 -0
- /package/dist/{metrics → agents/core/metrics}/session/SessionStore.d.ts +0 -0
- /package/dist/{metrics → agents/core/metrics}/types.d.ts +0 -0
- /package/dist/{metrics → agents/core/metrics}/types.js +0 -0
- /package/dist/{proxy → providers/plugins/sso/proxy}/plugins/endpoint-blocker.plugin.d.ts +0 -0
- /package/dist/{proxy → providers/plugins/sso/proxy}/plugins/header-injection.plugin.d.ts +0 -0
- /package/dist/{proxy → providers/plugins/sso/proxy}/plugins/logging.plugin.d.ts +0 -0
- /package/dist/{proxy → providers/plugins/sso/proxy}/plugins/registry.d.ts +0 -0
- /package/dist/{proxy → providers/plugins/sso/proxy}/plugins/sso-auth.plugin.d.ts +0 -0
- /package/dist/{proxy → providers/plugins/sso/proxy}/plugins/types.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"first-time.js","sourceRoot":"","sources":["../../src/utils/first-time.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"first-time.js","sourceRoot":"","sources":["../../src/utils/first-time.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAsB9E"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Git Utilities
|
|
3
3
|
*
|
|
4
|
-
* Helper functions for git operations
|
|
4
|
+
* Helper functions for git operations.
|
|
5
5
|
*/
|
|
6
6
|
import { exec } from 'child_process';
|
|
7
7
|
import { promisify } from 'util';
|
|
8
|
-
import { logger } from '
|
|
8
|
+
import { logger } from './logger.js';
|
|
9
9
|
const execAsync = promisify(exec);
|
|
10
10
|
/**
|
|
11
11
|
* Detect current git branch from working directory
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAW;IAC/C,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,iCAAiC,EAAE;YACpE,GAAG;YACH,OAAO,EAAE,IAAI,CAAC,mBAAmB;SAClC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAE7B,6BAA6B;QAC7B,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACxD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,mCAAmC,MAAM,EAAE,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,uCAAuC;QACvC,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;QAC/D,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
package/dist/utils/npm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm.d.ts","sourceRoot":"","sources":["../../src/utils/npm.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"npm.d.ts","sourceRoot":"","sources":["../../src/utils/npm.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,wCAAwC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,+CAA+C;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAmBlB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,UAAU,CAC9B,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkBxB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,MAAM,CAC1B,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
package/dist/utils/npm.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { exec } from './exec.js';
|
|
11
11
|
import { logger } from './logger.js';
|
|
12
|
+
import os from 'os';
|
|
12
13
|
/**
|
|
13
14
|
* Install a package globally via npm
|
|
14
15
|
*
|
|
@@ -30,10 +31,12 @@ export async function installGlobal(packageName, options = {}) {
|
|
|
30
31
|
const timeout = options.timeout ?? 120000; // 2 minutes default
|
|
31
32
|
logger.info(`Installing ${packageSpec} globally...`);
|
|
32
33
|
try {
|
|
34
|
+
const isWindows = os.platform() === 'win32';
|
|
33
35
|
const execOptions = {
|
|
34
36
|
cwd: options.cwd,
|
|
35
37
|
env: options.env,
|
|
36
|
-
timeout
|
|
38
|
+
timeout,
|
|
39
|
+
shell: isWindows // npm is a .cmd file on Windows
|
|
37
40
|
};
|
|
38
41
|
const result = await exec('npm', ['install', '-g', packageSpec], execOptions);
|
|
39
42
|
if (result.code !== 0) {
|
|
@@ -62,10 +65,12 @@ export async function uninstallGlobal(packageName, options = {}) {
|
|
|
62
65
|
const timeout = options.timeout ?? 30000; // 30 seconds default
|
|
63
66
|
logger.info(`Uninstalling ${packageName} globally...`);
|
|
64
67
|
try {
|
|
68
|
+
const isWindows = os.platform() === 'win32';
|
|
65
69
|
const execOptions = {
|
|
66
70
|
cwd: options.cwd,
|
|
67
71
|
env: options.env,
|
|
68
|
-
timeout
|
|
72
|
+
timeout,
|
|
73
|
+
shell: isWindows // npm is a .cmd file on Windows
|
|
69
74
|
};
|
|
70
75
|
const result = await exec('npm', ['uninstall', '-g', packageName], execOptions);
|
|
71
76
|
if (result.code !== 0) {
|
|
@@ -96,10 +101,12 @@ export async function uninstallGlobal(packageName, options = {}) {
|
|
|
96
101
|
export async function listGlobal(packageName, options = {}) {
|
|
97
102
|
const timeout = options.timeout ?? 5000; // 5 seconds default
|
|
98
103
|
try {
|
|
104
|
+
const isWindows = os.platform() === 'win32';
|
|
99
105
|
const execOptions = {
|
|
100
106
|
cwd: options.cwd,
|
|
101
107
|
env: options.env,
|
|
102
|
-
timeout
|
|
108
|
+
timeout,
|
|
109
|
+
shell: isWindows // npm is a .cmd file on Windows
|
|
103
110
|
};
|
|
104
111
|
const result = await exec('npm', ['list', '-g', packageName], execOptions);
|
|
105
112
|
// Exit code 0 = installed, 1 = not found, >1 = error
|
|
@@ -129,10 +136,12 @@ export async function listGlobal(packageName, options = {}) {
|
|
|
129
136
|
export async function getVersion(options = {}) {
|
|
130
137
|
const timeout = options.timeout ?? 5000; // 5 seconds default
|
|
131
138
|
try {
|
|
139
|
+
const isWindows = os.platform() === 'win32';
|
|
132
140
|
const execOptions = {
|
|
133
141
|
cwd: options.cwd,
|
|
134
142
|
env: options.env,
|
|
135
|
-
timeout
|
|
143
|
+
timeout,
|
|
144
|
+
shell: isWindows // npm is a .cmd file on Windows
|
|
136
145
|
};
|
|
137
146
|
const result = await exec('npm', ['--version'], execOptions);
|
|
138
147
|
const match = result.stdout.match(/\d+\.\d+\.\d+/);
|
|
@@ -163,11 +172,13 @@ export async function npxRun(command, args = [], options = {}) {
|
|
|
163
172
|
const timeout = options.timeout ?? 300000; // 5 minutes default (download + execution)
|
|
164
173
|
logger.info(`Running npx ${command} ${args.join(' ')}...`);
|
|
165
174
|
try {
|
|
175
|
+
const isWindows = os.platform() === 'win32';
|
|
166
176
|
const execOptions = {
|
|
167
177
|
cwd: options.cwd,
|
|
168
178
|
env: options.env,
|
|
169
179
|
timeout,
|
|
170
|
-
interactive: options.interactive
|
|
180
|
+
interactive: options.interactive,
|
|
181
|
+
shell: isWindows // npx is a .cmd file on Windows
|
|
171
182
|
};
|
|
172
183
|
await exec('npx', [command, ...args], execOptions);
|
|
173
184
|
logger.success(`npx ${command} completed successfully`);
|
package/dist/utils/npm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm.js","sourceRoot":"","sources":["../../src/utils/npm.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAe,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"npm.js","sourceRoot":"","sources":["../../src/utils/npm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-Platform Path Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides platform-agnostic path operations that work consistently
|
|
5
|
+
* across Windows, macOS, and Linux by normalizing all paths to forward slashes.
|
|
6
|
+
*
|
|
7
|
+
* This module consolidates all path-related logic including:
|
|
8
|
+
* - Path normalization and splitting
|
|
9
|
+
* - Path structure validation
|
|
10
|
+
* - Security checks (directory traversal prevention)
|
|
11
|
+
* - UUID validation for session files
|
|
12
|
+
* - File extension validation
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Normalize path separators to forward slashes for cross-platform consistency
|
|
16
|
+
*
|
|
17
|
+
* This function converts all backslashes to forward slashes, allowing the code
|
|
18
|
+
* to handle both Windows (C:\path\to\file) and Unix (/path/to/file) paths
|
|
19
|
+
* uniformly on any platform.
|
|
20
|
+
*
|
|
21
|
+
* @param filePath - Path with either forward slashes or backslashes
|
|
22
|
+
* @returns Path with only forward slashes
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* normalizePathSeparators('C:\\Users\\john\\.claude\\projects\\abc\\file.jsonl')
|
|
26
|
+
* // Returns: 'C:/Users/john/.claude/projects/abc/file.jsonl'
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* normalizePathSeparators('/home/user/.claude/projects/abc/file.jsonl')
|
|
30
|
+
* // Returns: '/home/user/.claude/projects/abc/file.jsonl' (unchanged)
|
|
31
|
+
*/
|
|
32
|
+
export declare function normalizePathSeparators(filePath: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Split path into parts using forward slash as separator
|
|
35
|
+
*
|
|
36
|
+
* Works consistently across all platforms by first normalizing separators.
|
|
37
|
+
*
|
|
38
|
+
* @param filePath - Path with either forward slashes or backslashes
|
|
39
|
+
* @returns Array of path segments
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* splitPath('C:\\Users\\john\\.claude\\projects\\abc\\file.jsonl')
|
|
43
|
+
* // Returns: ['C:', 'Users', 'john', '.claude', 'projects', 'abc', 'file.jsonl']
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* splitPath('/home/user/.claude/projects/abc/file.jsonl')
|
|
47
|
+
* // Returns: ['', 'home', 'user', '.claude', 'projects', 'abc', 'file.jsonl']
|
|
48
|
+
*/
|
|
49
|
+
export declare function splitPath(filePath: string): string[];
|
|
50
|
+
/**
|
|
51
|
+
* Get the filename from a path (last segment)
|
|
52
|
+
*
|
|
53
|
+
* @param filePath - Full path
|
|
54
|
+
* @returns Filename with extension
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* getFilename('C:\\Users\\john\\.claude\\projects\\abc\\file.jsonl')
|
|
58
|
+
* // Returns: 'file.jsonl'
|
|
59
|
+
*/
|
|
60
|
+
export declare function getFilename(filePath: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* Check if a path matches a specific structure
|
|
63
|
+
*
|
|
64
|
+
* Validates that a path follows the pattern: {prefix}/{dir1}/{dir2}/{...}/{filename}
|
|
65
|
+
* where the structure is relative to a base directory.
|
|
66
|
+
*
|
|
67
|
+
* @param filePath - Path to validate
|
|
68
|
+
* @param baseDirName - Base directory name to find (e.g., '.claude')
|
|
69
|
+
* @param expectedStructure - Array of directory names that should follow the base directory
|
|
70
|
+
* @returns true if path matches structure, false otherwise
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* matchesPathStructure(
|
|
74
|
+
* 'C:\\Users\\john\\.claude\\projects\\abc\\file.jsonl',
|
|
75
|
+
* '.claude',
|
|
76
|
+
* ['projects'] // expects: .claude/projects/{hash}/{file}
|
|
77
|
+
* )
|
|
78
|
+
* // Returns: true (has .claude/projects structure)
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* matchesPathStructure(
|
|
82
|
+
* '/home/user/.claude/sessions/abc/file.jsonl',
|
|
83
|
+
* '.claude',
|
|
84
|
+
* ['projects']
|
|
85
|
+
* )
|
|
86
|
+
* // Returns: false (has 'sessions' instead of 'projects')
|
|
87
|
+
*/
|
|
88
|
+
export declare function matchesPathStructure(filePath: string, baseDirName: string, expectedStructure: string[]): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Validate path depth relative to a base directory
|
|
91
|
+
*
|
|
92
|
+
* Checks that there are exactly N segments after the base directory.
|
|
93
|
+
*
|
|
94
|
+
* @param filePath - Path to validate
|
|
95
|
+
* @param baseDirName - Base directory name
|
|
96
|
+
* @param expectedDepth - Number of segments expected after base directory
|
|
97
|
+
* @returns true if depth matches, false otherwise
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* validatePathDepth(
|
|
101
|
+
* 'C:\\Users\\john\\.claude\\projects\\abc\\file.jsonl',
|
|
102
|
+
* '.claude',
|
|
103
|
+
* 3 // expects: .claude/{dir1}/{dir2}/{file}
|
|
104
|
+
* )
|
|
105
|
+
* // Returns: true (has 'projects', 'abc', 'file.jsonl' = 3 segments after .claude)
|
|
106
|
+
*/
|
|
107
|
+
export declare function validatePathDepth(filePath: string, baseDirName: string, expectedDepth: number): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Check if a resolved path is within a working directory boundary
|
|
110
|
+
*
|
|
111
|
+
* Uses path.relative() to prevent directory traversal attacks.
|
|
112
|
+
* This is safer than simple string prefix matching which can be bypassed
|
|
113
|
+
* by paths like: /home/user/project-attacker when checking /home/user/project
|
|
114
|
+
*
|
|
115
|
+
* @param workingDir - The working directory boundary
|
|
116
|
+
* @param resolvedPath - The resolved absolute path to check
|
|
117
|
+
* @returns true if path is within workingDir, false otherwise
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* isPathWithinDirectory('/home/user/project', '/home/user/project/file.txt')
|
|
121
|
+
* // Returns: true
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* isPathWithinDirectory('/home/user/project', '/home/user/project-other/file.txt')
|
|
125
|
+
* // Returns: false (prevented directory traversal)
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* isPathWithinDirectory('C:\\Users\\project', 'C:\\Users\\project\\..\\..\\etc\\passwd')
|
|
129
|
+
* // Returns: false (prevented traversal attack)
|
|
130
|
+
*/
|
|
131
|
+
export declare function isPathWithinDirectory(workingDir: string, resolvedPath: string): boolean;
|
|
132
|
+
/**
|
|
133
|
+
* Validate if a string matches UUID format (any version)
|
|
134
|
+
*
|
|
135
|
+
* Supports all UUID versions (v1, v2, v3, v4, v5) with case-insensitive matching.
|
|
136
|
+
*
|
|
137
|
+
* @param str - String to validate
|
|
138
|
+
* @returns true if valid UUID, false otherwise
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* isValidUuid('f52d1386-9d4c-4671-a31e-62dd6600a759')
|
|
142
|
+
* // Returns: true
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* isValidUuid('F52D1386-9D4C-4671-A31E-62DD6600A759')
|
|
146
|
+
* // Returns: true (case-insensitive)
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* isValidUuid('not-a-uuid')
|
|
150
|
+
* // Returns: false
|
|
151
|
+
*/
|
|
152
|
+
export declare function isValidUuid(str: string): boolean;
|
|
153
|
+
/**
|
|
154
|
+
* Validate if a filename has a valid UUID format with specific extension
|
|
155
|
+
*
|
|
156
|
+
* Checks that the filename (without extension) is a valid UUID.
|
|
157
|
+
*
|
|
158
|
+
* @param filename - Filename to validate (e.g., 'abc123.jsonl')
|
|
159
|
+
* @param extension - Required extension (e.g., '.jsonl')
|
|
160
|
+
* @returns true if filename is UUID with correct extension, false otherwise
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* isValidUuidFilename('f52d1386-9d4c-4671-a31e-62dd6600a759.jsonl', '.jsonl')
|
|
164
|
+
* // Returns: true
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* isValidUuidFilename('f52d1386-9d4c-4671-a31e-62dd6600a759.json', '.jsonl')
|
|
168
|
+
* // Returns: false (wrong extension)
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* isValidUuidFilename('not-a-uuid.jsonl', '.jsonl')
|
|
172
|
+
* // Returns: false (invalid UUID)
|
|
173
|
+
*/
|
|
174
|
+
export declare function isValidUuidFilename(filename: string, extension: string): boolean;
|
|
175
|
+
/**
|
|
176
|
+
* Resolve a path relative to the user's home directory
|
|
177
|
+
*
|
|
178
|
+
* Joins the user's home directory with the provided relative path.
|
|
179
|
+
* Useful for agent data directories like '.claude', '.codex', '.gemini', etc.
|
|
180
|
+
*
|
|
181
|
+
* @param relativePath - Relative path from home directory (e.g., '.claude', '.codex')
|
|
182
|
+
* @returns Absolute path in user's home directory
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* resolveHomeDir('.claude')
|
|
186
|
+
* // Returns: '/Users/john/.claude' (on macOS)
|
|
187
|
+
* // Returns: 'C:\\Users\\john\\.claude' (on Windows)
|
|
188
|
+
* // Returns: '/home/user/.claude' (on Linux)
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
* resolveHomeDir('.codex/auth.json')
|
|
192
|
+
* // Returns: '/Users/john/.codex/auth.json'
|
|
193
|
+
*/
|
|
194
|
+
export declare function resolveHomeDir(relativePath: string): string;
|
|
195
|
+
//# sourceMappingURL=path-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-utils.d.ts","sourceRoot":"","sources":["../../src/utils/path-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAGpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGpD;AAcD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,MAAM,EAAE,GAC1B,OAAO,CAiBT;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GACpB,OAAO,CAUT;AAMD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAIvF;AAaD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAMhF;AAOD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE3D"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-Platform Path Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides platform-agnostic path operations that work consistently
|
|
5
|
+
* across Windows, macOS, and Linux by normalizing all paths to forward slashes.
|
|
6
|
+
*
|
|
7
|
+
* This module consolidates all path-related logic including:
|
|
8
|
+
* - Path normalization and splitting
|
|
9
|
+
* - Path structure validation
|
|
10
|
+
* - Security checks (directory traversal prevention)
|
|
11
|
+
* - UUID validation for session files
|
|
12
|
+
* - File extension validation
|
|
13
|
+
*/
|
|
14
|
+
import path from 'path';
|
|
15
|
+
import { homedir } from 'os';
|
|
16
|
+
/**
|
|
17
|
+
* Normalize path separators to forward slashes for cross-platform consistency
|
|
18
|
+
*
|
|
19
|
+
* This function converts all backslashes to forward slashes, allowing the code
|
|
20
|
+
* to handle both Windows (C:\path\to\file) and Unix (/path/to/file) paths
|
|
21
|
+
* uniformly on any platform.
|
|
22
|
+
*
|
|
23
|
+
* @param filePath - Path with either forward slashes or backslashes
|
|
24
|
+
* @returns Path with only forward slashes
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* normalizePathSeparators('C:\\Users\\john\\.claude\\projects\\abc\\file.jsonl')
|
|
28
|
+
* // Returns: 'C:/Users/john/.claude/projects/abc/file.jsonl'
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* normalizePathSeparators('/home/user/.claude/projects/abc/file.jsonl')
|
|
32
|
+
* // Returns: '/home/user/.claude/projects/abc/file.jsonl' (unchanged)
|
|
33
|
+
*/
|
|
34
|
+
export function normalizePathSeparators(filePath) {
|
|
35
|
+
return filePath.replaceAll('\\', '/');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Split path into parts using forward slash as separator
|
|
39
|
+
*
|
|
40
|
+
* Works consistently across all platforms by first normalizing separators.
|
|
41
|
+
*
|
|
42
|
+
* @param filePath - Path with either forward slashes or backslashes
|
|
43
|
+
* @returns Array of path segments
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* splitPath('C:\\Users\\john\\.claude\\projects\\abc\\file.jsonl')
|
|
47
|
+
* // Returns: ['C:', 'Users', 'john', '.claude', 'projects', 'abc', 'file.jsonl']
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* splitPath('/home/user/.claude/projects/abc/file.jsonl')
|
|
51
|
+
* // Returns: ['', 'home', 'user', '.claude', 'projects', 'abc', 'file.jsonl']
|
|
52
|
+
*/
|
|
53
|
+
export function splitPath(filePath) {
|
|
54
|
+
const normalized = normalizePathSeparators(filePath);
|
|
55
|
+
return normalized.split('/');
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get the filename from a path (last segment)
|
|
59
|
+
*
|
|
60
|
+
* @param filePath - Full path
|
|
61
|
+
* @returns Filename with extension
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* getFilename('C:\\Users\\john\\.claude\\projects\\abc\\file.jsonl')
|
|
65
|
+
* // Returns: 'file.jsonl'
|
|
66
|
+
*/
|
|
67
|
+
export function getFilename(filePath) {
|
|
68
|
+
const parts = splitPath(filePath);
|
|
69
|
+
return parts.at(-1) || '';
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Find the index of a base directory in a path (internal helper)
|
|
73
|
+
*
|
|
74
|
+
* @param parts - Path segments from splitPath()
|
|
75
|
+
* @param baseDirName - Base directory name to find
|
|
76
|
+
* @returns Index of the directory, or -1 if not found
|
|
77
|
+
* @internal
|
|
78
|
+
*/
|
|
79
|
+
function findBaseIndex(parts, baseDirName) {
|
|
80
|
+
return parts.findIndex(part => part === baseDirName);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Check if a path matches a specific structure
|
|
84
|
+
*
|
|
85
|
+
* Validates that a path follows the pattern: {prefix}/{dir1}/{dir2}/{...}/{filename}
|
|
86
|
+
* where the structure is relative to a base directory.
|
|
87
|
+
*
|
|
88
|
+
* @param filePath - Path to validate
|
|
89
|
+
* @param baseDirName - Base directory name to find (e.g., '.claude')
|
|
90
|
+
* @param expectedStructure - Array of directory names that should follow the base directory
|
|
91
|
+
* @returns true if path matches structure, false otherwise
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* matchesPathStructure(
|
|
95
|
+
* 'C:\\Users\\john\\.claude\\projects\\abc\\file.jsonl',
|
|
96
|
+
* '.claude',
|
|
97
|
+
* ['projects'] // expects: .claude/projects/{hash}/{file}
|
|
98
|
+
* )
|
|
99
|
+
* // Returns: true (has .claude/projects structure)
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* matchesPathStructure(
|
|
103
|
+
* '/home/user/.claude/sessions/abc/file.jsonl',
|
|
104
|
+
* '.claude',
|
|
105
|
+
* ['projects']
|
|
106
|
+
* )
|
|
107
|
+
* // Returns: false (has 'sessions' instead of 'projects')
|
|
108
|
+
*/
|
|
109
|
+
export function matchesPathStructure(filePath, baseDirName, expectedStructure) {
|
|
110
|
+
const parts = splitPath(filePath);
|
|
111
|
+
const baseIndex = findBaseIndex(parts, baseDirName);
|
|
112
|
+
if (baseIndex === -1) {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
// Check if expected directories follow the base directory
|
|
116
|
+
for (let i = 0; i < expectedStructure.length; i++) {
|
|
117
|
+
const expectedIndex = baseIndex + 1 + i;
|
|
118
|
+
if (expectedIndex >= parts.length || parts[expectedIndex] !== expectedStructure[i]) {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Validate path depth relative to a base directory
|
|
126
|
+
*
|
|
127
|
+
* Checks that there are exactly N segments after the base directory.
|
|
128
|
+
*
|
|
129
|
+
* @param filePath - Path to validate
|
|
130
|
+
* @param baseDirName - Base directory name
|
|
131
|
+
* @param expectedDepth - Number of segments expected after base directory
|
|
132
|
+
* @returns true if depth matches, false otherwise
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* validatePathDepth(
|
|
136
|
+
* 'C:\\Users\\john\\.claude\\projects\\abc\\file.jsonl',
|
|
137
|
+
* '.claude',
|
|
138
|
+
* 3 // expects: .claude/{dir1}/{dir2}/{file}
|
|
139
|
+
* )
|
|
140
|
+
* // Returns: true (has 'projects', 'abc', 'file.jsonl' = 3 segments after .claude)
|
|
141
|
+
*/
|
|
142
|
+
export function validatePathDepth(filePath, baseDirName, expectedDepth) {
|
|
143
|
+
const parts = splitPath(filePath);
|
|
144
|
+
const baseIndex = findBaseIndex(parts, baseDirName);
|
|
145
|
+
if (baseIndex === -1) {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
const actualDepth = parts.length - baseIndex - 1;
|
|
149
|
+
return actualDepth === expectedDepth;
|
|
150
|
+
}
|
|
151
|
+
// ============================================================================
|
|
152
|
+
// Security Utilities
|
|
153
|
+
// ============================================================================
|
|
154
|
+
/**
|
|
155
|
+
* Check if a resolved path is within a working directory boundary
|
|
156
|
+
*
|
|
157
|
+
* Uses path.relative() to prevent directory traversal attacks.
|
|
158
|
+
* This is safer than simple string prefix matching which can be bypassed
|
|
159
|
+
* by paths like: /home/user/project-attacker when checking /home/user/project
|
|
160
|
+
*
|
|
161
|
+
* @param workingDir - The working directory boundary
|
|
162
|
+
* @param resolvedPath - The resolved absolute path to check
|
|
163
|
+
* @returns true if path is within workingDir, false otherwise
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* isPathWithinDirectory('/home/user/project', '/home/user/project/file.txt')
|
|
167
|
+
* // Returns: true
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* isPathWithinDirectory('/home/user/project', '/home/user/project-other/file.txt')
|
|
171
|
+
* // Returns: false (prevented directory traversal)
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* isPathWithinDirectory('C:\\Users\\project', 'C:\\Users\\project\\..\\..\\etc\\passwd')
|
|
175
|
+
* // Returns: false (prevented traversal attack)
|
|
176
|
+
*/
|
|
177
|
+
export function isPathWithinDirectory(workingDir, resolvedPath) {
|
|
178
|
+
const relative = path.relative(workingDir, resolvedPath);
|
|
179
|
+
// If path starts with '..' or is an absolute path, it's outside workingDir
|
|
180
|
+
return !relative.startsWith('..') && !path.isAbsolute(relative);
|
|
181
|
+
}
|
|
182
|
+
// ============================================================================
|
|
183
|
+
// UUID Validation Utilities
|
|
184
|
+
// ============================================================================
|
|
185
|
+
/**
|
|
186
|
+
* UUID regex pattern (any version)
|
|
187
|
+
* Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
|
188
|
+
* where x is any hexadecimal digit
|
|
189
|
+
*/
|
|
190
|
+
const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
191
|
+
/**
|
|
192
|
+
* Validate if a string matches UUID format (any version)
|
|
193
|
+
*
|
|
194
|
+
* Supports all UUID versions (v1, v2, v3, v4, v5) with case-insensitive matching.
|
|
195
|
+
*
|
|
196
|
+
* @param str - String to validate
|
|
197
|
+
* @returns true if valid UUID, false otherwise
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* isValidUuid('f52d1386-9d4c-4671-a31e-62dd6600a759')
|
|
201
|
+
* // Returns: true
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* isValidUuid('F52D1386-9D4C-4671-A31E-62DD6600A759')
|
|
205
|
+
* // Returns: true (case-insensitive)
|
|
206
|
+
*
|
|
207
|
+
* @example
|
|
208
|
+
* isValidUuid('not-a-uuid')
|
|
209
|
+
* // Returns: false
|
|
210
|
+
*/
|
|
211
|
+
export function isValidUuid(str) {
|
|
212
|
+
return UUID_PATTERN.test(str);
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Validate if a filename has a valid UUID format with specific extension
|
|
216
|
+
*
|
|
217
|
+
* Checks that the filename (without extension) is a valid UUID.
|
|
218
|
+
*
|
|
219
|
+
* @param filename - Filename to validate (e.g., 'abc123.jsonl')
|
|
220
|
+
* @param extension - Required extension (e.g., '.jsonl')
|
|
221
|
+
* @returns true if filename is UUID with correct extension, false otherwise
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* isValidUuidFilename('f52d1386-9d4c-4671-a31e-62dd6600a759.jsonl', '.jsonl')
|
|
225
|
+
* // Returns: true
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* isValidUuidFilename('f52d1386-9d4c-4671-a31e-62dd6600a759.json', '.jsonl')
|
|
229
|
+
* // Returns: false (wrong extension)
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* isValidUuidFilename('not-a-uuid.jsonl', '.jsonl')
|
|
233
|
+
* // Returns: false (invalid UUID)
|
|
234
|
+
*/
|
|
235
|
+
export function isValidUuidFilename(filename, extension) {
|
|
236
|
+
if (!filename.endsWith(extension)) {
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
const nameWithoutExt = filename.slice(0, -extension.length);
|
|
240
|
+
return isValidUuid(nameWithoutExt);
|
|
241
|
+
}
|
|
242
|
+
// ============================================================================
|
|
243
|
+
// Home Directory Utilities
|
|
244
|
+
// ============================================================================
|
|
245
|
+
/**
|
|
246
|
+
* Resolve a path relative to the user's home directory
|
|
247
|
+
*
|
|
248
|
+
* Joins the user's home directory with the provided relative path.
|
|
249
|
+
* Useful for agent data directories like '.claude', '.codex', '.gemini', etc.
|
|
250
|
+
*
|
|
251
|
+
* @param relativePath - Relative path from home directory (e.g., '.claude', '.codex')
|
|
252
|
+
* @returns Absolute path in user's home directory
|
|
253
|
+
*
|
|
254
|
+
* @example
|
|
255
|
+
* resolveHomeDir('.claude')
|
|
256
|
+
* // Returns: '/Users/john/.claude' (on macOS)
|
|
257
|
+
* // Returns: 'C:\\Users\\john\\.claude' (on Windows)
|
|
258
|
+
* // Returns: '/home/user/.claude' (on Linux)
|
|
259
|
+
*
|
|
260
|
+
* @example
|
|
261
|
+
* resolveHomeDir('.codex/auth.json')
|
|
262
|
+
* // Returns: '/Users/john/.codex/auth.json'
|
|
263
|
+
*/
|
|
264
|
+
export function resolveHomeDir(relativePath) {
|
|
265
|
+
return path.join(homedir(), relativePath);
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=path-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-utils.js","sourceRoot":"","sources":["../../src/utils/path-utils.ts"],"names":[],"mappings":"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"}
|