@ornexus/neocortex 4.60.73 → 4.60.74
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/release-source.json +1 -1
- package/dist/sbom.cdx.json +1216 -1210
- package/install.ps1 +1 -1
- package/install.sh +1 -1
- package/package.json +2 -2
- package/packages/client/dist/adapters/adapter-registry.js +1 -108
- package/packages/client/dist/adapters/antigravity-adapter.js +2 -77
- package/packages/client/dist/adapters/claude-code-adapter.js +3 -79
- package/packages/client/dist/adapters/codex-adapter.js +2 -80
- package/packages/client/dist/adapters/cursor-adapter.js +4 -115
- package/packages/client/dist/adapters/gemini-adapter.js +2 -71
- package/packages/client/dist/adapters/grok-adapter.js +2 -42
- package/packages/client/dist/adapters/index.js +1 -22
- package/packages/client/dist/adapters/platform-detector.js +1 -212
- package/packages/client/dist/adapters/target-adapter.js +0 -12
- package/packages/client/dist/adapters/vscode-adapter.js +2 -72
- package/packages/client/dist/agent/refresh-stubs.js +2 -417
- package/packages/client/dist/agent/update-agent-yaml.js +1 -102
- package/packages/client/dist/agent/update-description.js +1 -251
- package/packages/client/dist/cache/crypto-utils.js +1 -78
- package/packages/client/dist/cache/encrypted-cache.js +1 -108
- package/packages/client/dist/cache/in-memory-asset-cache.js +1 -73
- package/packages/client/dist/cache/index.js +1 -13
- package/packages/client/dist/cache/protected-pi-boundary.js +1 -44
- package/packages/client/dist/checkpoint/checkpoint-client-reader.js +2 -127
- package/packages/client/dist/checkpoint/index.js +1 -11
- package/packages/client/dist/checkpoint/shared-checkpoint-types.js +1 -32
- package/packages/client/dist/cli.js +5 -358
- package/packages/client/dist/commands/activate.js +8 -394
- package/packages/client/dist/commands/architecture-answers.js +7 -274
- package/packages/client/dist/commands/architecture-memory-terminal.js +4 -253
- package/packages/client/dist/commands/architecture-non-ui-continuation.js +1 -100
- package/packages/client/dist/commands/architecture-root-binding.js +1 -51
- package/packages/client/dist/commands/cache-status.js +2 -112
- package/packages/client/dist/commands/config.js +1 -88
- package/packages/client/dist/commands/doctor.js +2 -635
- package/packages/client/dist/commands/invoke.js +143 -7200
- package/packages/client/dist/commands/legacy-epic-terminal.js +1 -71
- package/packages/client/dist/commands/legacy-story-branch.js +1 -96
- package/packages/client/dist/commands/legacy-story-pr.js +1 -276
- package/packages/client/dist/commands/mutation-qa-checkpoint.js +5 -285
- package/packages/client/dist/commands/mutation-qa-gate.js +1 -54
- package/packages/client/dist/commands/mutation-qa-git.js +1 -41
- package/packages/client/dist/commands/mutation-qa-policy.js +1 -102
- package/packages/client/dist/commands/mutation-qa-run.js +3 -219
- package/packages/client/dist/commands/mutation-qa-verdict.js +1 -149
- package/packages/client/dist/commands/mutation-qa.js +1 -220
- package/packages/client/dist/commands/native-agent.js +2 -136
- package/packages/client/dist/commands/planning-diagnosis.js +1 -43
- package/packages/client/dist/commands/planning-generation.js +1 -53
- package/packages/client/dist/commands/planning-memory.js +1 -40
- package/packages/client/dist/commands/planning-research.js +1 -42
- package/packages/client/dist/commands/private-session.js +1 -75
- package/packages/client/dist/commands/property-qa.js +1 -139
- package/packages/client/dist/commands/qa-control.js +1 -16
- package/packages/client/dist/commands/qa-scan-browser-launch.js +1 -55
- package/packages/client/dist/commands/qa-scan-browser-route.js +1 -28
- package/packages/client/dist/commands/qa-scan-capture.js +5 -663
- package/packages/client/dist/commands/qa-scan-discovery.js +3 -376
- package/packages/client/dist/commands/qa-scan-review.js +5 -826
- package/packages/client/dist/commands/qa-synthetic-backend-capture.js +1 -266
- package/packages/client/dist/commands/qa-synthetic-backend-review.js +1 -297
- package/packages/client/dist/commands/qa-synthetic-backend.js +2 -340
- package/packages/client/dist/commands/qa-synthetic-broker-port.js +1 -85
- package/packages/client/dist/commands/qa-synthetic-browser.js +1 -39
- package/packages/client/dist/commands/refactor-characterization.js +21 -671
- package/packages/client/dist/commands/refactor-commit.js +13 -399
- package/packages/client/dist/commands/refactor-control.js +3 -142
- package/packages/client/dist/commands/refactor-cpp-assertions.js +3 -93
- package/packages/client/dist/commands/refactor-review.js +5 -283
- package/packages/client/dist/commands/refactor-root.js +7 -588
- package/packages/client/dist/commands/refresh-memory.js +3 -156
- package/packages/client/dist/commands/shared-architecture-non-ui.js +1 -24
- package/packages/client/dist/commands/story-checkpoint.js +1 -171
- package/packages/client/dist/config/profile-directory.js +1 -13
- package/packages/client/dist/config/resolver-selection.js +1 -278
- package/packages/client/dist/config/secure-config.js +12 -281
- package/packages/client/dist/config.js +2 -223
- package/packages/client/dist/constants.js +1 -25
- package/packages/client/dist/context/context-collector.js +2 -222
- package/packages/client/dist/context/context-sanitizer.js +1 -145
- package/packages/client/dist/continuity/autonomous-governance.js +1 -285
- package/packages/client/dist/continuity/continuity-client-state-store.js +1 -1587
- package/packages/client/dist/continuity/invoke-hooks.js +1 -129
- package/packages/client/dist/continuity/migrations/001-initial-schema.js +2 -12
- package/packages/client/dist/continuity/migrations/002-processing-output-summary-indexes.js +2 -12
- package/packages/client/dist/continuity/migrations/003-headless-execution-attempts.js +2 -12
- package/packages/client/dist/continuity/migrations/004-outbox-delivery-state.js +2 -12
- package/packages/client/dist/continuity/migrations/005-bounded-headless-queue.js +2 -12
- package/packages/client/dist/continuity/migrations/006-native-agent-dispatches.js +2 -10
- package/packages/client/dist/continuity/native-agent-store.js +1 -69
- package/packages/client/dist/continuity/native-agent-types.js +1 -90
- package/packages/client/dist/continuity/outbox.js +1 -117
- package/packages/client/dist/continuity/runner-bootstrap-policy.js +1 -172
- package/packages/client/dist/continuity/sqlite-store.js +81 -2612
- package/packages/client/dist/effects/invoke-effect-gateways.js +1 -62
- package/packages/client/dist/errors/error-messages.js +2 -228
- package/packages/client/dist/errors/frontmatter-diagnostics.js +1 -125
- package/packages/client/dist/evidence/collector.js +1 -347
- package/packages/client/dist/evidence/index.js +1 -1
- package/packages/client/dist/evidence/types.js +0 -2
- package/packages/client/dist/fs/atomic-state-replace.js +1 -152
- package/packages/client/dist/generated/command-registry.generated.js +1 -4076
- package/packages/client/dist/generated/public-projections.generated.js +1 -149
- package/packages/client/dist/git/direct-yolo-c01-retry.js +4 -138
- package/packages/client/dist/git/direct-yolo-checkpoint.js +4 -1234
- package/packages/client/dist/git/epic-operational-state.js +2 -672
- package/packages/client/dist/git/git-lifecycle-step-ids.js +1 -14
- package/packages/client/dist/git/git-lifecycle-store.d.ts +23 -0
- package/packages/client/dist/git/git-lifecycle-store.js +10 -1981
- package/packages/client/dist/git/legacy-story-branch-checkpoint.js +9 -259
- package/packages/client/dist/git/legacy-story-branch-setup.js +4 -348
- package/packages/client/dist/git/legacy-story-pr.js +70 -3538
- package/packages/client/dist/git/secure-filesystem-boundary.js +5 -182
- package/packages/client/dist/graph-retrieval/pre-command-hook.js +1 -284
- package/packages/client/dist/graph-retrieval/shared-graph-retrieval-contract.js +1 -237
- package/packages/client/dist/i18n/first-run.js +2 -60
- package/packages/client/dist/index.js +1 -47
- package/packages/client/dist/invocation/invoke-input.js +1 -24
- package/packages/client/dist/license/index.js +1 -5
- package/packages/client/dist/license/license-client.js +1 -304
- package/packages/client/dist/machine/fingerprint.js +2 -163
- package/packages/client/dist/machine/index.js +1 -5
- package/packages/client/dist/memory/project-memory-path-scope.js +1 -62
- package/packages/client/dist/memory/project-memory-writer.js +40 -1007
- package/packages/client/dist/memory/shared-project-memory-types.js +2 -253
- package/packages/client/dist/migrations/epic-lifecycle-backfill.js +3 -1060
- package/packages/client/dist/migrations/project-identity-capability.js +1 -50
- package/packages/client/dist/migrations/project-identity.js +7 -493
- package/packages/client/dist/migrations/state-json.js +4 -393
- package/packages/client/dist/policy/architecture-policy.js +2 -184
- package/packages/client/dist/policy/index.js +1 -7
- package/packages/client/dist/policy/shared-policy-types.js +0 -38
- package/packages/client/dist/policy/subagent-approval-policy.js +1 -55
- package/packages/client/dist/private-execution/clean-baseline.js +2 -279
- package/packages/client/dist/private-execution/codex-executor.js +4 -574
- package/packages/client/dist/private-execution/codex-host-runtime.js +1 -137
- package/packages/client/dist/private-execution/codex-lifecycle-guard.js +1 -97
- package/packages/client/dist/private-execution/codex-scoped-permissions.js +1 -128
- package/packages/client/dist/private-execution/delivery.js +13 -410
- package/packages/client/dist/private-execution/diagnosis-root-review.js +2 -294
- package/packages/client/dist/private-execution/frozen-handoff.js +6 -19
- package/packages/client/dist/private-execution/implementation-validation.js +2 -106
- package/packages/client/dist/private-execution/isolated-admission.js +23 -1432
- package/packages/client/dist/private-execution/isolated-session.js +5 -725
- package/packages/client/dist/private-execution/isolated-workspace.js +1 -122
- package/packages/client/dist/private-execution/pact-consumer-runtime.js +3 -409
- package/packages/client/dist/private-execution/pact-test-source.js +1 -258
- package/packages/client/dist/private-execution/pact-toolchain.js +3 -290
- package/packages/client/dist/private-execution/pact-write-set.js +1 -172
- package/packages/client/dist/private-execution/planning-diagnosis-checkpoint.js +5 -406
- package/packages/client/dist/private-execution/planning-generation-checkpoint.js +5 -462
- package/packages/client/dist/private-execution/planning-memory-checkpoint.js +3 -139
- package/packages/client/dist/private-execution/planning-research-checkpoint.js +4 -325
- package/packages/client/dist/private-execution/private-report-store.js +1 -42
- package/packages/client/dist/private-execution/property-test-candidate.js +1 -103
- package/packages/client/dist/private-execution/property-test-choices.js +3 -147
- package/packages/client/dist/private-execution/property-test-plan.js +7 -271
- package/packages/client/dist/private-execution/property-test-review.js +4 -258
- package/packages/client/dist/private-execution/property-test-runtime.js +9 -372
- package/packages/client/dist/private-execution/property-test-source.js +1 -139
- package/packages/client/dist/private-execution/root-checkpoint.js +1 -80
- package/packages/client/dist/private-execution/root-memory-git-evidence.js +3 -135
- package/packages/client/dist/private-execution/root-memory-recovery.js +1 -93
- package/packages/client/dist/private-execution/root-memory-request.js +1 -29
- package/packages/client/dist/private-execution/root-memory-scope.js +1 -178
- package/packages/client/dist/private-execution/root-memory-writer.js +1 -102
- package/packages/client/dist/private-execution/session-lease.js +1 -63
- package/packages/client/dist/private-execution/shared-private-admission-types.js +1 -50
- package/packages/client/dist/private-execution/shared-project-validation.js +1 -66
- package/packages/client/dist/private-execution/shared-root-memory-types.js +1 -61
- package/packages/client/dist/private-execution/ux-source-validation.js +1 -372
- package/packages/client/dist/private-execution/ux-write-set.js +2 -191
- package/packages/client/dist/registry/registry-reconciliation.js +1 -234
- package/packages/client/dist/resilience/circuit-breaker.js +1 -170
- package/packages/client/dist/resilience/degradation-manager.js +1 -164
- package/packages/client/dist/resilience/freshness-indicator.js +1 -100
- package/packages/client/dist/resilience/index.js +1 -8
- package/packages/client/dist/resilience/recovery-detector.js +1 -74
- package/packages/client/dist/resolvers/asset-resolver.js +0 -13
- package/packages/client/dist/resolvers/local-resolver.js +8 -255
- package/packages/client/dist/resolvers/remote-resolver.js +1 -233
- package/packages/client/dist/runner/binary.js +1 -404
- package/packages/client/dist/runner/cli.js +17 -1571
- package/packages/client/dist/runner/headless/adapters.js +1 -49
- package/packages/client/dist/runner/headless/claude-code-adapter.js +1 -79
- package/packages/client/dist/runner/headless/continuous-story-workspace.js +11 -1628
- package/packages/client/dist/runner/headless/epic-git-reconciliation-inventory.js +1 -69
- package/packages/client/dist/runner/headless/epic-merge-candidate-qa.d.ts +1 -1
- package/packages/client/dist/runner/headless/epic-merge-candidate-qa.js +2 -110
- package/packages/client/dist/runner/headless/epic-terminal-git-cli-adapter.d.ts +2 -0
- package/packages/client/dist/runner/headless/epic-terminal-git-cli-adapter.js +10 -1236
- package/packages/client/dist/runner/headless/epic-terminal-git-runner.d.ts +18 -2
- package/packages/client/dist/runner/headless/epic-terminal-git-runner.js +2 -318
- package/packages/client/dist/runner/headless/fake-adapter.js +1 -62
- package/packages/client/dist/runner/headless/managed-profile.js +1 -132
- package/packages/client/dist/runner/headless/opencode-adapter.js +2 -145
- package/packages/client/dist/runner/headless/prepared-story-bundle.js +1 -43
- package/packages/client/dist/runner/headless/resolver.js +1 -231
- package/packages/client/dist/runner/headless/run-yolo.js +1 -885
- package/packages/client/dist/runner/headless/run-yoloop.d.ts +1 -0
- package/packages/client/dist/runner/headless/run-yoloop.js +2 -2574
- package/packages/client/dist/runner/headless/types.js +2 -574
- package/packages/client/dist/runner/local-console.js +13 -396
- package/packages/client/dist/runner/portal-sync-worker.js +1 -1487
- package/packages/client/dist/runner/project-identity.js +1 -106
- package/packages/client/dist/runner/scheduler.js +7 -995
- package/packages/client/dist/runner-cli.js +2 -18
- package/packages/client/dist/state/invocation-shape.js +1 -13
- package/packages/client/dist/state/project-state-snapshot.js +1 -1731
- package/packages/client/dist/state/state-json-repair.js +3 -785
- package/packages/client/dist/state/structural-dag-projection.js +1 -118
- package/packages/client/dist/telemetry/index.js +1 -5
- package/packages/client/dist/telemetry/offline-queue.js +1 -131
- package/packages/client/dist/tier/index.js +1 -5
- package/packages/client/dist/tier/tier-aware-client.js +1 -405
- package/packages/client/dist/types/index.js +1 -38
- package/packages/client/dist/version.js +1 -27
- package/packages/client/dist/yolo/change-evidence-collector.js +1 -126
- package/packages/client/dist/yolo/invoke-envelope-capability.js +1 -62
- package/packages/client/dist/yolo/spec-envelope-collector.js +5 -184
- package/packages/client/dist/yoloop/discovery-hook.js +2 -300
- package/packages/client/dist/yoloop/index.js +1 -8
- package/packages/client/dist/yoloop/invoke-hooks.js +12 -669
- package/packages/client/dist/yoloop/shared-discover-epics.js +1 -1007
- package/packages/client/dist/yoloop/shared-yoloop-types.js +1 -33
- package/packages/client/dist/yoloop/target-normalization.js +1 -180
- package/packages/client/dist/yoloop/yoloop-client-state-store.js +1 -1920
- package/packages/shared/dist/yolo/change-evidence.js +1 -1
- package/packages/shared/dist/yoloop/epic-terminal-git.js +144 -2
- package/targets-stubs/antigravity/gemini.md +1 -1
- package/targets-stubs/antigravity/skill/SKILL.md +1 -1
- package/targets-stubs/claude-code/neocortex-root.agent.yaml +1 -1
- package/targets-stubs/claude-code/neocortex-root.md +2 -2
- package/targets-stubs/claude-code/neocortex.agent.yaml +1 -1
- package/targets-stubs/claude-code/neocortex.md +2 -2
- package/targets-stubs/codex/AGENTS.md +1 -1
- package/targets-stubs/cursor/agent.md +2 -2
- package/targets-stubs/gemini-cli/agent.md +2 -2
- package/targets-stubs/opencode/neocortex-root.md +1 -1
- package/targets-stubs/vscode/neocortex.agent.md +2 -2
|
@@ -1,106 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* @license FSL-1.1
|
|
3
|
-
* Copyright (c) 2026 OrNexus AI
|
|
4
|
-
*
|
|
5
|
-
* P197.01 -- shared client-local project identity derivation.
|
|
6
|
-
*/
|
|
7
|
-
import { createHash } from 'node:crypto';
|
|
8
|
-
import { isAbsolute, resolve } from 'node:path';
|
|
9
|
-
export const PROJECT_IDENTITY_HASH_CHARS = 12;
|
|
10
|
-
export const PROJECT_IDENTITY_LABEL_CHARS = 24;
|
|
11
|
-
const FALLBACK_PROJECT_LABEL = 'project';
|
|
12
|
-
const FALLBACK_WORKSPACE_LABEL = 'workspace';
|
|
13
|
-
const SECRET_OR_PII_LOOKING_PATTERN = /(?:@|ghp_[A-Za-z0-9_]+|sk-[A-Za-z0-9_-]+|password|passwd|secret|token|api[_-]?key|license[_-]?key|private[_-]?key|credential|customer[_-]?pii|\bpii\b)/i;
|
|
14
|
-
export function deriveProjectIdentity(projectRoot) {
|
|
15
|
-
const inputRoot = typeof projectRoot === 'string' ? projectRoot : '';
|
|
16
|
-
const absoluteRoot = safeAbsolutePath(inputRoot) ?? resolve(inputRoot || '.');
|
|
17
|
-
const normalizedRoot = normalizeIdentityRoot(absoluteRoot);
|
|
18
|
-
const labelRoot = normalizeIdentityRoot(inputRoot || '.');
|
|
19
|
-
const projectLabel = sanitizeIdentityLabel(basenameForIdentity(labelRoot), FALLBACK_PROJECT_LABEL);
|
|
20
|
-
const projectId = identityId(projectLabel, FALLBACK_PROJECT_LABEL, normalizedRoot);
|
|
21
|
-
const parentLabelSource = parentBasenameForIdentity(labelRoot);
|
|
22
|
-
const parentRoot = parentRootForIdentity(normalizedRoot);
|
|
23
|
-
const workspaceLabel = parentLabelSource
|
|
24
|
-
? sanitizeIdentityLabel(parentLabelSource, FALLBACK_WORKSPACE_LABEL)
|
|
25
|
-
: projectLabel;
|
|
26
|
-
const workspaceId = parentLabelSource && parentRoot
|
|
27
|
-
? identityId(workspaceLabel, FALLBACK_WORKSPACE_LABEL, parentRoot)
|
|
28
|
-
: projectId;
|
|
29
|
-
return {
|
|
30
|
-
projectId,
|
|
31
|
-
projectLabel,
|
|
32
|
-
workspaceId,
|
|
33
|
-
workspaceLabel,
|
|
34
|
-
publicSafe: true,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
export function normalizeIdentityRoot(value) {
|
|
38
|
-
let normalized = value.replace(/\\/g, '/').replace(/\/+$/g, '');
|
|
39
|
-
if (!normalized)
|
|
40
|
-
normalized = '/';
|
|
41
|
-
normalized = normalized.replace(/^([A-Z]):\//, (_match, drive) => `${drive.toLowerCase()}:/`);
|
|
42
|
-
return normalized;
|
|
43
|
-
}
|
|
44
|
-
export function basenameForIdentity(normalizedRoot) {
|
|
45
|
-
const segments = identitySegments(normalizedRoot);
|
|
46
|
-
return segments[segments.length - 1] ?? FALLBACK_PROJECT_LABEL;
|
|
47
|
-
}
|
|
48
|
-
export function sanitizeProjectBasename(value) {
|
|
49
|
-
const normalized = value
|
|
50
|
-
.normalize('NFKD')
|
|
51
|
-
.replace(/[\u0300-\u036f]/g, '')
|
|
52
|
-
.toLowerCase()
|
|
53
|
-
.replace(/[^a-z0-9]+/g, '-')
|
|
54
|
-
.replace(/^-+|-+$/g, '')
|
|
55
|
-
.slice(0, PROJECT_IDENTITY_LABEL_CHARS)
|
|
56
|
-
.replace(/-+$/g, '');
|
|
57
|
-
return normalized || FALLBACK_PROJECT_LABEL;
|
|
58
|
-
}
|
|
59
|
-
function identityId(label, fallback, normalizedRoot) {
|
|
60
|
-
const hash = shortIdentityHash(normalizedRoot);
|
|
61
|
-
const candidate = `${label}-${hash}`;
|
|
62
|
-
// A safe label such as "task" becomes "task-<hash>", which contains the
|
|
63
|
-
// secret-looking "sk-" substring. Screen the composed value as well as the
|
|
64
|
-
// label; retain the same path hash so the fallback stays deterministic.
|
|
65
|
-
return SECRET_OR_PII_LOOKING_PATTERN.test(candidate) ? `${fallback}-${hash}` : candidate;
|
|
66
|
-
}
|
|
67
|
-
function shortIdentityHash(value) {
|
|
68
|
-
return createHash('sha256').update(value).digest('hex').slice(0, PROJECT_IDENTITY_HASH_CHARS);
|
|
69
|
-
}
|
|
70
|
-
function sanitizeIdentityLabel(value, fallback) {
|
|
71
|
-
if (SECRET_OR_PII_LOOKING_PATTERN.test(value))
|
|
72
|
-
return fallback;
|
|
73
|
-
const label = sanitizeProjectBasename(value);
|
|
74
|
-
if (SECRET_OR_PII_LOOKING_PATTERN.test(label))
|
|
75
|
-
return fallback;
|
|
76
|
-
return label;
|
|
77
|
-
}
|
|
78
|
-
function parentBasenameForIdentity(normalizedRoot) {
|
|
79
|
-
const segments = identitySegments(normalizedRoot);
|
|
80
|
-
if (segments.length < 2)
|
|
81
|
-
return undefined;
|
|
82
|
-
const parent = segments[segments.length - 2];
|
|
83
|
-
if (/^[A-Za-z]:$/.test(parent))
|
|
84
|
-
return undefined;
|
|
85
|
-
return parent;
|
|
86
|
-
}
|
|
87
|
-
function parentRootForIdentity(normalizedRoot) {
|
|
88
|
-
const segments = identitySegments(normalizedRoot);
|
|
89
|
-
if (segments.length < 2)
|
|
90
|
-
return undefined;
|
|
91
|
-
if (/^[A-Za-z]:$/.test(segments[segments.length - 2] ?? ''))
|
|
92
|
-
return undefined;
|
|
93
|
-
const parentSegments = segments.slice(0, -1);
|
|
94
|
-
if (/^[A-Za-z]:$/.test(parentSegments[0] ?? ''))
|
|
95
|
-
return parentSegments.join('/');
|
|
96
|
-
return normalizedRoot.startsWith('/') ? `/${parentSegments.join('/')}` : parentSegments.join('/');
|
|
97
|
-
}
|
|
98
|
-
function identitySegments(normalizedRoot) {
|
|
99
|
-
return normalizedRoot.split('/').filter(Boolean);
|
|
100
|
-
}
|
|
101
|
-
function safeAbsolutePath(value) {
|
|
102
|
-
if (!value || /[\r\n\0]/.test(value))
|
|
103
|
-
return null;
|
|
104
|
-
const resolved = isAbsolute(value) ? value : resolve(value);
|
|
105
|
-
return isAbsolute(resolved) ? resolved : null;
|
|
106
|
-
}
|
|
1
|
+
import{createHash as h}from"node:crypto";import{isAbsolute as f,resolve as _}from"node:path";const R=12,y=24,s="project",A="workspace",a=/(?:@|ghp_[A-Za-z0-9_]+|sk-[A-Za-z0-9_-]+|password|passwd|secret|token|api[_-]?key|license[_-]?key|private[_-]?key|credential|customer[_-]?pii|\bpii\b)/i;function B(e){const t=typeof e=="string"?e:"",n=T(t)??_(t||"."),r=g(n),o=g(t||"."),i=I(z(o),s),p=m(i,s,r),c=$(o),l=C(r),d=c?I(c,A):i,L=c&&l?m(d,A,l):p;return{projectId:p,projectLabel:i,workspaceId:L,workspaceLabel:d,publicSafe:!0}}function g(e){let t=e.replace(/\\/g,"/").replace(/\/+$/g,"");return t||(t="/"),t=t.replace(/^([A-Z]):\//,(n,r)=>`${r.toLowerCase()}:/`),t}function z(e){const t=u(e);return t[t.length-1]??s}function b(e){return e.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,y).replace(/-+$/g,"")||s}function m(e,t,n){const r=E(n),o=`${e}-${r}`;return a.test(o)?`${t}-${r}`:o}function E(e){return h("sha256").update(e).digest("hex").slice(0,R)}function I(e,t){if(a.test(e))return t;const n=b(e);return a.test(n)?t:n}function $(e){const t=u(e);if(t.length<2)return;const n=t[t.length-2];if(!/^[A-Za-z]:$/.test(n))return n}function C(e){const t=u(e);if(t.length<2||/^[A-Za-z]:$/.test(t[t.length-2]??""))return;const n=t.slice(0,-1);return/^[A-Za-z]:$/.test(n[0]??"")?n.join("/"):e.startsWith("/")?`/${n.join("/")}`:n.join("/")}function u(e){return e.split("/").filter(Boolean)}function T(e){if(!e||/[\r\n\0]/.test(e))return null;const t=f(e)?e:_(e);return f(t)?t:null}export{R as PROJECT_IDENTITY_HASH_CHARS,y as PROJECT_IDENTITY_LABEL_CHARS,z as basenameForIdentity,B as deriveProjectIdentity,g as normalizeIdentityRoot,b as sanitizeProjectBasename};
|