@kaitranntt/ccs 7.75.0-dev.9 → 7.76.0
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/auth/profile-registry.d.ts.map +1 -1
- package/dist/auth/profile-registry.js +9 -0
- package/dist/auth/profile-registry.js.map +1 -1
- package/dist/ccs.js +77 -9
- package/dist/ccs.js.map +1 -1
- package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
- package/dist/cliproxy/auth/oauth-handler.js +20 -0
- package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
- package/dist/commands/command-catalog.d.ts.map +1 -1
- package/dist/commands/command-catalog.js +4 -0
- package/dist/commands/command-catalog.js.map +1 -1
- package/dist/commands/doctor-command.d.ts.map +1 -1
- package/dist/commands/doctor-command.js +9 -0
- package/dist/commands/doctor-command.js.map +1 -1
- package/dist/copilot/copilot-auth.d.ts.map +1 -1
- package/dist/copilot/copilot-auth.js +22 -0
- package/dist/copilot/copilot-auth.js.map +1 -1
- package/dist/copilot/copilot-daemon.d.ts.map +1 -1
- package/dist/copilot/copilot-daemon.js +26 -0
- package/dist/copilot/copilot-daemon.js.map +1 -1
- package/dist/copilot/copilot-executor.d.ts.map +1 -1
- package/dist/copilot/copilot-executor.js +22 -0
- package/dist/copilot/copilot-executor.js.map +1 -1
- package/dist/cursor/cursor-daemon.d.ts.map +1 -1
- package/dist/cursor/cursor-daemon.js +28 -1
- package/dist/cursor/cursor-daemon.js.map +1 -1
- package/dist/cursor/cursor-executor.d.ts.map +1 -1
- package/dist/cursor/cursor-executor.js +17 -1
- package/dist/cursor/cursor-executor.js.map +1 -1
- package/dist/delegation/delegation-handler.d.ts.map +1 -1
- package/dist/delegation/delegation-handler.js +4 -1
- package/dist/delegation/delegation-handler.js.map +1 -1
- package/dist/glmt/glmt-proxy.d.ts.map +1 -1
- package/dist/glmt/glmt-proxy.js +7 -0
- package/dist/glmt/glmt-proxy.js.map +1 -1
- package/dist/glmt/glmt-transformer.d.ts.map +1 -1
- package/dist/glmt/glmt-transformer.js +1 -3
- package/dist/glmt/glmt-transformer.js.map +1 -1
- package/dist/management/instance-manager.d.ts.map +1 -1
- package/dist/management/instance-manager.js +9 -0
- package/dist/management/instance-manager.js.map +1 -1
- package/dist/proxy/server/messages-route.d.ts.map +1 -1
- package/dist/proxy/server/messages-route.js +27 -7
- package/dist/proxy/server/messages-route.js.map +1 -1
- package/dist/proxy/server/proxy-server.d.ts.map +1 -1
- package/dist/proxy/server/proxy-server.js +24 -6
- package/dist/proxy/server/proxy-server.js.map +1 -1
- package/dist/services/logging/index.d.ts +6 -1
- package/dist/services/logging/index.d.ts.map +1 -1
- package/dist/services/logging/index.js +16 -1
- package/dist/services/logging/index.js.map +1 -1
- package/dist/services/logging/log-context.d.ts +41 -0
- package/dist/services/logging/log-context.d.ts.map +1 -0
- package/dist/services/logging/log-context.js +51 -0
- package/dist/services/logging/log-context.js.map +1 -0
- package/dist/services/logging/log-redaction.d.ts +8 -0
- package/dist/services/logging/log-redaction.d.ts.map +1 -1
- package/dist/services/logging/log-redaction.js +40 -3
- package/dist/services/logging/log-redaction.js.map +1 -1
- package/dist/services/logging/log-types.d.ts +30 -0
- package/dist/services/logging/log-types.d.ts.map +1 -1
- package/dist/services/logging/log-types.js +15 -1
- package/dist/services/logging/log-types.js.map +1 -1
- package/dist/services/logging/logger.d.ts +17 -0
- package/dist/services/logging/logger.d.ts.map +1 -1
- package/dist/services/logging/logger.js +23 -4
- package/dist/services/logging/logger.js.map +1 -1
- package/dist/targets/claude-adapter.d.ts.map +1 -1
- package/dist/targets/claude-adapter.js +11 -0
- package/dist/targets/claude-adapter.js.map +1 -1
- package/dist/targets/codex-adapter.d.ts.map +1 -1
- package/dist/targets/codex-adapter.js +11 -0
- package/dist/targets/codex-adapter.js.map +1 -1
- package/dist/targets/droid-adapter.d.ts.map +1 -1
- package/dist/targets/droid-adapter.js +11 -0
- package/dist/targets/droid-adapter.js.map +1 -1
- package/dist/ui/assets/{accounts-C11yNnFn.js → accounts-CDgKt-GZ.js} +1 -1
- package/dist/ui/assets/{alert-dialog-BDhZ9T12.js → alert-dialog-CRqbTpjm.js} +1 -1
- package/dist/ui/assets/{api-DXFMasvG.js → api-C7W2ibtd.js} +1 -1
- package/dist/ui/assets/{auth-section-BQpO_21y.js → auth-section-RBgQQrdk.js} +1 -1
- package/dist/ui/assets/{backups-section-BM2lP-ap.js → backups-section-DptarTls.js} +1 -1
- package/dist/ui/assets/{channels-qstH8YTZ.js → channels-BMQs4wmY.js} +1 -1
- package/dist/ui/assets/{charts-BBPXh0Ar.js → charts-CeK2xCSo.js} +1 -1
- package/dist/ui/assets/{checkbox-BPx7K8To.js → checkbox-BrRyK0T3.js} +1 -1
- package/dist/ui/assets/{claude-extension-BD6uQlc-.js → claude-extension-DrSuOyf4.js} +1 -1
- package/dist/ui/assets/{cliproxy-5-BIu9Wb.js → cliproxy-CdqYwRJH.js} +1 -1
- package/dist/ui/assets/{cliproxy-ai-providers-BNffQh5X.js → cliproxy-ai-providers-B8aZTWIe.js} +1 -1
- package/dist/ui/assets/{cliproxy-control-panel-CjExrU2o.js → cliproxy-control-panel-BpXgvmht.js} +1 -1
- package/dist/ui/assets/{code-highlight-BRUf_pqB.js → code-highlight-D4E79GKQ.js} +1 -1
- package/dist/ui/assets/{codex-Dd2XIT8b.js → codex-CYoq5g4z.js} +1 -1
- package/dist/ui/assets/{confirm-dialog-BZP3xwZi.js → confirm-dialog-CP-4T1Wp.js} +1 -1
- package/dist/ui/assets/{copilot-gf-rTcY8.js → copilot-aEdlrY3S.js} +1 -1
- package/dist/ui/assets/{cursor-CJGCGy-H.js → cursor-CSJ0aqxS.js} +1 -1
- package/dist/ui/assets/{droid-D1Wq6rRO.js → droid-DTdvqOvV.js} +1 -1
- package/dist/ui/assets/{form-utils-Bcoyqxpq.js → form-utils-CuHzLhJZ.js} +1 -1
- package/dist/ui/assets/{globalenv-section-DBqYbsuu.js → globalenv-section-DXbRVgOM.js} +1 -1
- package/dist/ui/assets/{health-DW8M92nq.js → health-CDce37cB.js} +1 -1
- package/dist/ui/assets/icons-DQFHtVq5.js +1 -0
- package/dist/ui/assets/index-6xrth3Oz.css +1 -0
- package/dist/ui/assets/{index-CoeauyY0.js → index-Bm9k7s_T.js} +1 -1
- package/dist/ui/assets/{index-B5cw5Mhf.js → index-D_FmvtnX.js} +1 -1
- package/dist/ui/assets/{index-B0dun58L.js → index-DjxqZO4B.js} +1 -1
- package/dist/ui/assets/{index-ubH9RpKo.js → index-Fd17BSGq.js} +3 -3
- package/dist/ui/assets/{index-IiaQMFco.js → index-KK76yIJk.js} +1 -1
- package/dist/ui/assets/{index-BczU222d.js → index-dnIWLkjb.js} +1 -1
- package/dist/ui/assets/{index-JIaHpwil.js → index-vN-yw8kw.js} +1 -1
- package/dist/ui/assets/logs-C_MtpQIE.js +1 -0
- package/dist/ui/assets/{masked-input-Bmo6mlTB.js → masked-input-BAWBYIqo.js} +1 -1
- package/dist/ui/assets/{notifications-B2HqRBj7.js → notifications-B4_o8bcr.js} +1 -1
- package/dist/ui/assets/{proxy-g4_N-fbB.js → proxy-C4-M_9kB.js} +1 -1
- package/dist/ui/assets/{proxy-status-widget-EX_Raok7.js → proxy-status-widget-DUqasX3c.js} +1 -1
- package/dist/ui/assets/{radix-ui-Zb8sVEtn.js → radix-ui-nu4wz29m.js} +1 -1
- package/dist/ui/assets/{raw-json-settings-editor-panel-C4DFuY4g.js → raw-json-settings-editor-panel-DuVlOXFi.js} +1 -1
- package/dist/ui/assets/{react-vendor-CNOkPC89.js → react-vendor-Bjx91N7w.js} +1 -1
- package/dist/ui/assets/{searchable-select-CLhlrHkQ.js → searchable-select-BCxZHr8N.js} +1 -1
- package/dist/ui/assets/{separator-BEJQ4e4O.js → separator-BV4BKMsB.js} +1 -1
- package/dist/ui/assets/{shared-4QlIu64T.js → shared-D-Cu_o1h.js} +1 -1
- package/dist/ui/assets/{table-B6xzmyfm.js → table-DW66THR9.js} +1 -1
- package/dist/ui/assets/{tanstack-CrmUhA7Z.js → tanstack-bhJxV1h8.js} +1 -1
- package/dist/ui/assets/{updates-DBkXWRpR.js → updates-V0D_Q8n4.js} +1 -1
- package/dist/ui/index.html +9 -9
- package/package.json +1 -1
- package/scripts/run-test-bucket.js +2 -0
- package/dist/ui/assets/icons-DyorC3Xk.js +0 -1
- package/dist/ui/assets/index-Bbiq6Xkt.css +0 -1
- package/dist/ui/assets/logs-DbWcj2t5.js +0 -1
|
@@ -40,6 +40,8 @@ const shared_manager_1 = __importDefault(require("./shared-manager"));
|
|
|
40
40
|
const profile_context_sync_lock_1 = __importDefault(require("./profile-context-sync-lock"));
|
|
41
41
|
const account_context_1 = require("../auth/account-context");
|
|
42
42
|
const config_manager_1 = require("../utils/config-manager");
|
|
43
|
+
const logging_1 = require("../services/logging");
|
|
44
|
+
const logger = (0, logging_1.createLogger)('management:instance-manager');
|
|
43
45
|
const MANAGED_MCP_SERVER_NAMES = new Set(['ccs-websearch', 'ccs-image-analysis', 'ccs-browser']);
|
|
44
46
|
/**
|
|
45
47
|
* Instance Manager Class
|
|
@@ -60,6 +62,10 @@ class InstanceManager {
|
|
|
60
62
|
await this.contextSyncLock.withLock(profileName, async () => {
|
|
61
63
|
// Lazy initialization
|
|
62
64
|
if (!fs.existsSync(instancePath)) {
|
|
65
|
+
logger.stage('route', 'instance.init', 'Initializing new profile instance', {
|
|
66
|
+
profile: profileName,
|
|
67
|
+
bare: options.bare === true,
|
|
68
|
+
});
|
|
63
69
|
this.initializeInstance(profileName, instancePath, options);
|
|
64
70
|
}
|
|
65
71
|
// Validate structure (auto-fix missing dirs)
|
|
@@ -155,6 +161,9 @@ class InstanceManager {
|
|
|
155
161
|
return;
|
|
156
162
|
}
|
|
157
163
|
fs.rmSync(instancePath, { recursive: true, force: true });
|
|
164
|
+
logger.stage('cleanup', 'instance.deleted', 'Profile instance deleted', {
|
|
165
|
+
profile: profileName,
|
|
166
|
+
});
|
|
158
167
|
});
|
|
159
168
|
});
|
|
160
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-manager.js","sourceRoot":"","sources":["../../src/management/instance-manager.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,sEAA6C;AAC7C,4FAAiE;AACjE,6DAAuE;AAEvE,4DAAgE;
|
|
1
|
+
{"version":3,"file":"instance-manager.js","sourceRoot":"","sources":["../../src/management/instance-manager.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,sEAA6C;AAC7C,4FAAiE;AACjE,6DAAuE;AAEvE,4DAAgE;AAChE,iDAAmD;AAEnD,MAAM,MAAM,GAAG,IAAA,sBAAY,EAAC,6BAA6B,CAAC,CAAC;AAE3D,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,oBAAoB,EAAE,aAAa,CAAC,CAAC,CAAC;AAQjG;;GAEG;AACH,MAAM,eAAe;IAMnB;QACE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAA,0BAAS,GAAE,EAAE,WAAW,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,GAAG,IAAI,wBAAa,EAAE,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,IAAI,mCAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrE,IAAI,CAAC,gBAAgB,GAAG,IAAI,mCAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,WAAmB,EACnB,gBAAsC,EAAE,IAAI,EAAE,8CAA4B,EAAE,EAC5E,UAA2B,EAAE;QAE7B,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAEvD,kEAAkE;QAClE,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YAC1D,sBAAsB;YACtB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,mCAAmC,EAAE;oBAC1E,OAAO,EAAE,WAAW;oBACpB,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,IAAI;iBAC5B,CAAC,CAAC;gBACH,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YAC9D,CAAC;YAED,6CAA6C;YAC7C,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAEpC,qEAAqE;YACrE,MAAM,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YACzE,MAAM,IAAI,CAAC,aAAa,CAAC,+BAA+B,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YAEtF,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;gBACxE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBAClB,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;oBACvD,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;gBACzD,IAAI,CAAC,aAAa,CAAC,kCAAkC,EAAE,CAAC;YAC1D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,4DAA4D;QAC5D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,WAAmB;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACK,kBAAkB,CACxB,WAAmB,EACnB,YAAoB,EACpB,WAA4B,EAAE;QAE9B,IAAI,CAAC;YACH,wBAAwB;YACxB,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAE7D,gEAAgE;YAChE,MAAM,OAAO,GAAG;gBACd,aAAa;gBACb,OAAO;gBACP,MAAM;gBACN,cAAc;gBACd,iBAAiB;gBACjB,OAAO;gBACP,YAAY;aACb,CAAC;YAEF,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;gBAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,iFAAiF;QACnF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,qCAAqC,WAAW,KAAM,KAAe,CAAC,OAAO,EAAE,CAChF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,YAAoB;QAC3C,oEAAoE;QACpE,MAAM,YAAY,GAAG;YACnB,aAAa;YACb,OAAO;YACP,MAAM;YACN,cAAc;YACd,iBAAiB;YACjB,OAAO;YACP,YAAY;SACb,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;YAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,gEAAgE;gBAChE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,6EAA6E;IAC/E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,WAAmB;QACtC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAEvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;gBACxE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;oBACjC,OAAO;gBACT,CAAC;gBAED,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1D,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,kBAAkB,EAAE,0BAA0B,EAAE;oBACtE,OAAO,EAAE,WAAW;iBACrB,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,aAAa;QACX,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACvD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YACxD,OAAO,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,WAAmB;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACvD,OAAO,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,YAAoB;QACjC,MAAM,OAAO,GAAG,IAAA,2BAAU,GAAE,CAAC;QAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAE5D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5E,MAAM,aAAa,GAAG,aAAa,CAAC,UAAU,CAAC;YAC/C,IACE,CAAC,aAAa;gBACd,OAAO,aAAa,KAAK,QAAQ;gBACjC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,KAAK,CAAC,EACvC,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,UAAU,GAAG,aAAwC,CAAC;YAC5D,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;YACnE,IAAI,eAAe,GAA4B,EAAE,CAAC;YAElD,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC;oBACH,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC5E,CAAC;gBAAC,MAAM,CAAC;oBACP,8BAA8B;oBAC9B,eAAe,GAAG,EAAE,CAAC;gBACvB,CAAC;YACH,CAAC;YAED,yEAAyE;YACzE,kFAAkF;YAClF,MAAM,cAAc,GAAG,eAAe,CAAC,UAAU,CAAC;YAClD,MAAM,WAAW,GACf,cAAc,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;gBACpF,CAAC,CAAE,cAA0C;gBAC7C,CAAC,CAAC,EAAE,CAAC;YACT,MAAM,gBAAgB,GAAG,EAAE,GAAG,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;YAC3D,KAAK,MAAM,WAAW,IAAI,wBAAwB,EAAE,CAAC;gBACnD,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;oBAC9B,gBAAgB,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;YACD,eAAe,CAAC,UAAU,GAAG,gBAAgB,CAAC;YAE9C,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC;gBAChD,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,IAAI,GAAG,KAAK;gBAC9C,CAAC,CAAC,KAAK,CAAC;YACV,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;gBAC7E,QAAQ,EAAE,MAAM;gBAChB,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,8DAA8D;YAC9D,OAAO,CAAC,IAAI,CAAC,yBAA0B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAClE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,IAAY;QAC/B,sCAAsC;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5D,CAAC;CACF;AAEQ,0CAAe;AACxB,kBAAe,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages-route.d.ts","sourceRoot":"","sources":["../../../src/proxy/server/messages-route.ts"],"names":[],"mappings":";;;AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAyFnE,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM,GAAG,IAAI,CAmB1F;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EACjC,aAAa,EAAE,MAAM,GACpB,OAAO,CAET;AAmDD,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,UAAU,EAAE,eAAe,EAC3B,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GACrC,MAAM,IAAI,CA0BZ;AAED,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,OAAO,EAAE,yBAAyB,EAClC,iBAAiB,EAAE,MAAM,EACzB,kBAAkB,CAAC,EAAE,UAAU,GAC9B,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"messages-route.d.ts","sourceRoot":"","sources":["../../../src/proxy/server/messages-route.ts"],"names":[],"mappings":";;;AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAyFnE,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM,GAAG,IAAI,CAmB1F;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EACjC,aAAa,EAAE,MAAM,GACpB,OAAO,CAET;AAmDD,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,UAAU,EAAE,eAAe,EAC3B,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GACrC,MAAM,IAAI,CA0BZ;AAED,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,OAAO,EAAE,yBAAyB,EAClC,iBAAiB,EAAE,MAAM,EACzB,kBAAkB,CAAC,EAAE,UAAU,GAC9B,OAAO,CAAC,IAAI,CAAC,CA8Hf;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,OAAO,EAAE,yBAAyB,GACjC,IAAI,CAWN"}
|
|
@@ -142,18 +142,25 @@ function attachDisconnectAbortHandlers(req, res, controller, onDisconnect) {
|
|
|
142
142
|
exports.attachDisconnectAbortHandlers = attachDisconnectAbortHandlers;
|
|
143
143
|
async function handleProxyMessagesRequest(req, res, profile, expectedAuthToken, insecureDispatcher) {
|
|
144
144
|
const transformer = new sse_stream_transformer_1.ProxySseStreamTransformer();
|
|
145
|
+
const startedAt = Date.now();
|
|
146
|
+
logger.stage('intake', 'request.received', 'Proxy /v1/messages request received', {
|
|
147
|
+
method: req.method || 'POST',
|
|
148
|
+
remoteAddress: req.socket.remoteAddress || null,
|
|
149
|
+
});
|
|
145
150
|
if (!validateIncomingProxyAuth(req.headers, expectedAuthToken)) {
|
|
146
|
-
logger.
|
|
151
|
+
logger.stage('auth', 'auth.invalid', 'Rejected proxy message request with invalid auth token', {
|
|
147
152
|
remoteAddress: req.socket.remoteAddress || null,
|
|
148
|
-
});
|
|
153
|
+
}, { level: 'warn' });
|
|
149
154
|
await (0, http_helpers_1.pipeWebResponseToNode)(transformer.error(401, 'authentication_error', 'Missing or invalid local proxy token'), res);
|
|
150
155
|
return;
|
|
151
156
|
}
|
|
157
|
+
logger.stage('auth', 'auth.ok', 'Proxy auth validated');
|
|
152
158
|
let timeoutMs = REQUEST_TIMEOUT_MS;
|
|
153
159
|
try {
|
|
154
160
|
const rawBody = await (0, http_helpers_1.readJsonBody)(req);
|
|
161
|
+
logger.stage('transform', 'request.transform.start', 'Transforming inbound proxy body');
|
|
155
162
|
const upstream = buildUpstreamRequest(profile, rawBody);
|
|
156
|
-
logger.
|
|
163
|
+
logger.stage('route', 'request.routed', 'Resolved proxy upstream route', {
|
|
157
164
|
profileName: upstream.route.profile.profileName,
|
|
158
165
|
provider: upstream.route.profile.provider,
|
|
159
166
|
baseUrl: upstream.route.profile.baseUrl,
|
|
@@ -166,20 +173,26 @@ async function handleProxyMessagesRequest(req, res, profile, expectedAuthToken,
|
|
|
166
173
|
timeoutMs = getRequestTimeoutMs();
|
|
167
174
|
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
168
175
|
const cleanupDisconnectHandlers = attachDisconnectAbortHandlers(req, res, controller, (source) => {
|
|
169
|
-
logger.
|
|
176
|
+
logger.stage('cleanup', 'request.disconnect', 'Aborting upstream request after local client disconnect', {
|
|
170
177
|
profileName: profile.profileName,
|
|
171
178
|
source,
|
|
172
179
|
});
|
|
173
180
|
});
|
|
174
181
|
try {
|
|
182
|
+
logger.stage('dispatch', 'upstream.dispatch', 'Dispatching upstream fetch', {
|
|
183
|
+
profileName: profile.profileName,
|
|
184
|
+
});
|
|
175
185
|
const upstreamResponse = await fetch((0, upstream_url_1.resolveOpenAIChatCompletionsUrl)(upstream.route.profile.baseUrl), buildFetchInit(upstream.route.profile, upstream.body, controller.signal, insecureDispatcher));
|
|
176
|
-
logger.
|
|
186
|
+
logger.stage('upstream', 'upstream.response', 'Received upstream response', {
|
|
177
187
|
profileName: profile.profileName,
|
|
178
188
|
routedProfileName: upstream.route.profile.profileName,
|
|
179
189
|
status: upstreamResponse.status,
|
|
180
190
|
});
|
|
181
191
|
const response = await transformer.transform(upstreamResponse);
|
|
182
192
|
await (0, http_helpers_1.pipeWebResponseToNode)(response, res);
|
|
193
|
+
logger.stage('respond', 'request.respond', 'Proxy response written', undefined, {
|
|
194
|
+
latencyMs: Date.now() - startedAt,
|
|
195
|
+
});
|
|
183
196
|
}
|
|
184
197
|
finally {
|
|
185
198
|
clearTimeout(timeout);
|
|
@@ -188,10 +201,17 @@ async function handleProxyMessagesRequest(req, res, profile, expectedAuthToken,
|
|
|
188
201
|
}
|
|
189
202
|
catch (error) {
|
|
190
203
|
const message = error instanceof Error ? error.message : 'Unknown proxy error';
|
|
191
|
-
|
|
204
|
+
const errInfo = {
|
|
205
|
+
name: error instanceof Error ? error.name : 'Error',
|
|
206
|
+
message,
|
|
207
|
+
};
|
|
208
|
+
logger.stage('cleanup', 'request.failed', 'Proxy message request failed', {
|
|
192
209
|
profileName: profile.profileName,
|
|
193
|
-
error: message,
|
|
194
210
|
abort: error instanceof Error && error.name === 'AbortError',
|
|
211
|
+
}, {
|
|
212
|
+
level: 'error',
|
|
213
|
+
latencyMs: Date.now() - startedAt,
|
|
214
|
+
error: errInfo,
|
|
195
215
|
});
|
|
196
216
|
const status = error instanceof Error && error.name === 'AbortError'
|
|
197
217
|
? 502
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages-route.js","sourceRoot":"","sources":["../../../src/proxy/server/messages-route.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"messages-route.js","sourceRoot":"","sources":["../../../src/proxy/server/messages-route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-server.d.ts","sourceRoot":"","sources":["../../../src/proxy/server/proxy-server.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"proxy-server.d.ts","sourceRoot":"","sources":["../../../src/proxy/server/proxy-server.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAsBnE,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,yBAAyB,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,8BAA8B,GAAG,IAAI,CAAC,MAAM,CA+GjG"}
|
|
@@ -25,11 +25,22 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.startOpenAICompatProxyServer = void 0;
|
|
27
27
|
const http = __importStar(require("http"));
|
|
28
|
+
const crypto_1 = require("crypto");
|
|
28
29
|
const undici_1 = require("undici");
|
|
29
30
|
const proxy_daemon_paths_1 = require("../proxy-daemon-paths");
|
|
30
31
|
const logging_1 = require("../../services/logging");
|
|
31
32
|
const messages_route_1 = require("./messages-route");
|
|
32
33
|
const http_helpers_1 = require("./http-helpers");
|
|
34
|
+
const REQUEST_ID_HEADER = 'x-ccs-request-id';
|
|
35
|
+
// Loose UUID-ish guard: accepts UUIDs and similar opaque ids; rejects empty / control chars.
|
|
36
|
+
const REQUEST_ID_PATTERN = /^[A-Za-z0-9._-]{8,128}$/;
|
|
37
|
+
function resolveInboundRequestId(headers) {
|
|
38
|
+
const raw = headers[REQUEST_ID_HEADER];
|
|
39
|
+
if (typeof raw === 'string' && REQUEST_ID_PATTERN.test(raw.trim())) {
|
|
40
|
+
return raw.trim();
|
|
41
|
+
}
|
|
42
|
+
return (0, crypto_1.randomUUID)();
|
|
43
|
+
}
|
|
33
44
|
function startOpenAICompatProxyServer(options) {
|
|
34
45
|
const host = options.host?.trim() || '127.0.0.1';
|
|
35
46
|
const logger = (0, logging_1.createLogger)('proxy:openai-compat', {
|
|
@@ -40,11 +51,18 @@ function startOpenAICompatProxyServer(options) {
|
|
|
40
51
|
const insecureDispatcher = options.insecure
|
|
41
52
|
? new undici_1.Agent({ connect: { rejectUnauthorized: false } })
|
|
42
53
|
: undefined;
|
|
43
|
-
const server = http.createServer(
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
54
|
+
const server = http.createServer((req, res) => {
|
|
55
|
+
const requestId = resolveInboundRequestId(req.headers);
|
|
56
|
+
res.setHeader(REQUEST_ID_HEADER, requestId);
|
|
57
|
+
void (0, logging_1.withRequestContext)({ requestId }, async () => {
|
|
58
|
+
const method = req.method || 'GET';
|
|
59
|
+
const requestUrl = req.url || '/';
|
|
60
|
+
const parsedUrl = new URL(requestUrl, 'http://127.0.0.1');
|
|
61
|
+
const pathname = parsedUrl.pathname.length > 1 ? parsedUrl.pathname.replace(/\/+$/, '') : parsedUrl.pathname;
|
|
62
|
+
await handleProxyRequest(req, res, method, pathname);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
async function handleProxyRequest(req, res, method, pathname) {
|
|
48
66
|
if ((method === 'GET' || method === 'HEAD') && pathname === '/health') {
|
|
49
67
|
if (method === 'HEAD') {
|
|
50
68
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
@@ -107,7 +125,7 @@ function startOpenAICompatProxyServer(options) {
|
|
|
107
125
|
pathname,
|
|
108
126
|
});
|
|
109
127
|
(0, http_helpers_1.writeJson)(res, 404, { error: 'Not found' });
|
|
110
|
-
}
|
|
128
|
+
}
|
|
111
129
|
logger.info('server.start', 'OpenAI-compatible proxy server listening', {
|
|
112
130
|
baseUrl: `http://${host}:${options.port}`,
|
|
113
131
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-server.js","sourceRoot":"","sources":["../../../src/proxy/server/proxy-server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAC7B,mCAA+B;AAE/B,8DAAyE;AACzE,
|
|
1
|
+
{"version":3,"file":"proxy-server.js","sourceRoot":"","sources":["../../../src/proxy/server/proxy-server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAC7B,mCAAoC;AACpC,mCAA+B;AAE/B,8DAAyE;AACzE,oDAA0E;AAC1E,qDAI0B;AAC1B,iDAA2C;AAE3C,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAC7C,6FAA6F;AAC7F,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;AAErD,SAAS,uBAAuB,CAAC,OAAiC;IAChE,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACnE,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IACD,OAAO,IAAA,mBAAU,GAAE,CAAC;AACtB,CAAC;AAUD,SAAgB,4BAA4B,CAAC,OAAuC;IAClF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,WAAW,CAAC;IACjD,MAAM,MAAM,GAAG,IAAA,sBAAY,EAAC,qBAAqB,EAAE;QACjD,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW;QACxC,IAAI;QACJ,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAC;IACH,MAAM,kBAAkB,GAAG,OAAO,CAAC,QAAQ;QACzC,CAAC,CAAC,IAAI,cAAK,CAAC,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE,CAAC;QACvD,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5C,MAAM,SAAS,GAAG,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvD,GAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;QAC5C,KAAK,IAAA,4BAAkB,EAAC,EAAE,SAAS,EAAE,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;YACnC,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;YAC1D,MAAM,QAAQ,GACZ,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC;YAC9F,MAAM,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,kBAAkB,CAC/B,GAAyB,EACzB,GAAwB,EACxB,MAAc,EACd,QAAgB;QAEhB,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACtE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,IAAA,wBAAS,EAAC,GAAG,EAAE,GAAG,EAAE;oBAClB,EAAE,EAAE,IAAI;oBACR,OAAO,EAAE,qDAAgC;oBACzC,IAAI;oBACJ,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW;oBACpC,IAAI,EAAE,OAAO,CAAC,IAAI;iBACnB,CAAC,CAAC;YACL,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;YAChE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,IAAA,wBAAS,EAAC,GAAG,EAAE,GAAG,EAAE;oBAClB,EAAE,EAAE,IAAI;oBACR,OAAO,EAAE,qDAAgC;oBACzC,IAAI,EAAE;wBACJ,IAAI;wBACJ,IAAI,EAAE,OAAO,CAAC,IAAI;qBACnB;oBACD,OAAO,EAAE;wBACP,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW;wBACjC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;wBAClC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI;qBACrC;oBACD,SAAS,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,YAAY,CAAC;iBACrD,CAAC,CAAC;YACL,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,KAAK,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YAClD,IAAI,CAAC,IAAA,0CAAyB,EAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/D,IAAA,wBAAS,EAAC,GAAG,EAAE,GAAG,EAAE;oBAClB,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE;wBACL,IAAI,EAAE,sBAAsB;wBAC5B,OAAO,EAAE,sCAAsC;qBAChD;iBACF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,IAAA,yCAAwB,EAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;YACrD,MAAM,IAAA,2CAA0B,EAC9B,GAAG,EACH,GAAG,EACH,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,SAAS,EACjB,kBAAkB,CACnB,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,8BAA8B,EAAE;YAC5D,MAAM;YACN,QAAQ;SACT,CAAC,CAAC;QACH,IAAA,wBAAS,EAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,0CAA0C,EAAE;QACtE,OAAO,EAAE,UAAU,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;KAC1C,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACtB,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,wCAAwC,CAAC,CAAC;QACrE,KAAK,kBAAkB,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC;AAChB,CAAC;AA/GD,oEA+GC"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
export { createLogger } from './logger';
|
|
2
|
+
export type { Logger, StageOptions } from './logger';
|
|
2
3
|
export { getResolvedLoggingConfig, invalidateLoggingConfigCache } from './log-config';
|
|
3
4
|
export { readLogEntries, readLogSourceSummaries, normalizeLogQueryLevel } from './log-reader';
|
|
4
5
|
export { pruneExpiredLogArchives } from './log-storage';
|
|
5
6
|
export { ensureLoggingDirectories, getCurrentLogPath, getLegacyCliproxyLogsDir, getLogArchiveDir, getNativeLogsDir, isPathInsideDirectory, } from './log-paths';
|
|
6
|
-
export
|
|
7
|
+
export { getRecentLogEntries, clearRecentLogEntries } from './log-buffer';
|
|
8
|
+
export { withRequestContext, runWithRequestId, getRequestContext, getRequestId, mergeRequestContext, } from './log-context';
|
|
9
|
+
export type { RequestContext } from './log-context';
|
|
10
|
+
export { LOG_LEVELS, LOG_STAGES, shouldWriteLogLevel, isLoggingLevel, isLogStage, } from './log-types';
|
|
11
|
+
export type { LogEntry, LogErrorInfo, LogSourceSummary, LogStage, LoggingLevel, ReadLogEntriesOptions, } from './log-types';
|
|
7
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/logging/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/logging/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACL,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,UAAU,GACX,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,qBAAqB,GACtB,MAAM,aAAa,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isPathInsideDirectory = exports.getNativeLogsDir = exports.getLogArchiveDir = exports.getLegacyCliproxyLogsDir = exports.getCurrentLogPath = exports.ensureLoggingDirectories = exports.pruneExpiredLogArchives = exports.normalizeLogQueryLevel = exports.readLogSourceSummaries = exports.readLogEntries = exports.invalidateLoggingConfigCache = exports.getResolvedLoggingConfig = exports.createLogger = void 0;
|
|
3
|
+
exports.isLogStage = exports.isLoggingLevel = exports.shouldWriteLogLevel = exports.LOG_STAGES = exports.LOG_LEVELS = exports.mergeRequestContext = exports.getRequestId = exports.getRequestContext = exports.runWithRequestId = exports.withRequestContext = exports.clearRecentLogEntries = exports.getRecentLogEntries = exports.isPathInsideDirectory = exports.getNativeLogsDir = exports.getLogArchiveDir = exports.getLegacyCliproxyLogsDir = exports.getCurrentLogPath = exports.ensureLoggingDirectories = exports.pruneExpiredLogArchives = exports.normalizeLogQueryLevel = exports.readLogSourceSummaries = exports.readLogEntries = exports.invalidateLoggingConfigCache = exports.getResolvedLoggingConfig = exports.createLogger = void 0;
|
|
4
4
|
var logger_1 = require("./logger");
|
|
5
5
|
Object.defineProperty(exports, "createLogger", { enumerable: true, get: function () { return logger_1.createLogger; } });
|
|
6
6
|
var log_config_1 = require("./log-config");
|
|
@@ -19,4 +19,19 @@ Object.defineProperty(exports, "getLegacyCliproxyLogsDir", { enumerable: true, g
|
|
|
19
19
|
Object.defineProperty(exports, "getLogArchiveDir", { enumerable: true, get: function () { return log_paths_1.getLogArchiveDir; } });
|
|
20
20
|
Object.defineProperty(exports, "getNativeLogsDir", { enumerable: true, get: function () { return log_paths_1.getNativeLogsDir; } });
|
|
21
21
|
Object.defineProperty(exports, "isPathInsideDirectory", { enumerable: true, get: function () { return log_paths_1.isPathInsideDirectory; } });
|
|
22
|
+
var log_buffer_1 = require("./log-buffer");
|
|
23
|
+
Object.defineProperty(exports, "getRecentLogEntries", { enumerable: true, get: function () { return log_buffer_1.getRecentLogEntries; } });
|
|
24
|
+
Object.defineProperty(exports, "clearRecentLogEntries", { enumerable: true, get: function () { return log_buffer_1.clearRecentLogEntries; } });
|
|
25
|
+
var log_context_1 = require("./log-context");
|
|
26
|
+
Object.defineProperty(exports, "withRequestContext", { enumerable: true, get: function () { return log_context_1.withRequestContext; } });
|
|
27
|
+
Object.defineProperty(exports, "runWithRequestId", { enumerable: true, get: function () { return log_context_1.runWithRequestId; } });
|
|
28
|
+
Object.defineProperty(exports, "getRequestContext", { enumerable: true, get: function () { return log_context_1.getRequestContext; } });
|
|
29
|
+
Object.defineProperty(exports, "getRequestId", { enumerable: true, get: function () { return log_context_1.getRequestId; } });
|
|
30
|
+
Object.defineProperty(exports, "mergeRequestContext", { enumerable: true, get: function () { return log_context_1.mergeRequestContext; } });
|
|
31
|
+
var log_types_1 = require("./log-types");
|
|
32
|
+
Object.defineProperty(exports, "LOG_LEVELS", { enumerable: true, get: function () { return log_types_1.LOG_LEVELS; } });
|
|
33
|
+
Object.defineProperty(exports, "LOG_STAGES", { enumerable: true, get: function () { return log_types_1.LOG_STAGES; } });
|
|
34
|
+
Object.defineProperty(exports, "shouldWriteLogLevel", { enumerable: true, get: function () { return log_types_1.shouldWriteLogLevel; } });
|
|
35
|
+
Object.defineProperty(exports, "isLoggingLevel", { enumerable: true, get: function () { return log_types_1.isLoggingLevel; } });
|
|
36
|
+
Object.defineProperty(exports, "isLogStage", { enumerable: true, get: function () { return log_types_1.isLogStage; } });
|
|
22
37
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/logging/index.ts"],"names":[],"mappings":";;;AAAA,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/logging/index.ts"],"names":[],"mappings":";;;AAAA,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AAErB,2CAAsF;AAA7E,sHAAA,wBAAwB,OAAA;AAAE,0HAAA,4BAA4B,OAAA;AAC/D,2CAA8F;AAArF,4GAAA,cAAc,OAAA;AAAE,oHAAA,sBAAsB,OAAA;AAAE,oHAAA,sBAAsB,OAAA;AACvE,6CAAwD;AAA/C,sHAAA,uBAAuB,OAAA;AAChC,yCAOqB;AANnB,qHAAA,wBAAwB,OAAA;AACxB,8GAAA,iBAAiB,OAAA;AACjB,qHAAA,wBAAwB,OAAA;AACxB,6GAAA,gBAAgB,OAAA;AAChB,6GAAA,gBAAgB,OAAA;AAChB,kHAAA,qBAAqB,OAAA;AAEvB,2CAA0E;AAAjE,iHAAA,mBAAmB,OAAA;AAAE,mHAAA,qBAAqB,OAAA;AACnD,6CAMuB;AALrB,iHAAA,kBAAkB,OAAA;AAClB,+GAAA,gBAAgB,OAAA;AAChB,gHAAA,iBAAiB,OAAA;AACjB,2GAAA,YAAY,OAAA;AACZ,kHAAA,mBAAmB,OAAA;AAGrB,yCAMqB;AALnB,uGAAA,UAAU,OAAA;AACV,uGAAA,UAAU,OAAA;AACV,gHAAA,mBAAmB,OAAA;AACnB,2GAAA,cAAc,OAAA;AACd,uGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-request context carried via Node.js {@link AsyncLocalStorage}.
|
|
3
|
+
*
|
|
4
|
+
* MUST contain only non-sensitive correlation metadata. NEVER store tokens,
|
|
5
|
+
* secrets, raw bodies, or other sensitive material in this object — values
|
|
6
|
+
* leak into every downstream log entry emitted within the context.
|
|
7
|
+
*/
|
|
8
|
+
export interface RequestContext {
|
|
9
|
+
/** UUID-shaped correlation id; round-trips via `x-ccs-request-id` header. */
|
|
10
|
+
requestId: string;
|
|
11
|
+
/** Optional benign request metadata (method, path, command name, etc.). */
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Run `fn` inside a fresh request context. Use ONLY at request entry edges
|
|
16
|
+
* (HTTP handlers, CLI command dispatch, daemon inbound boundaries).
|
|
17
|
+
*
|
|
18
|
+
* Never call from shared/reused infrastructure — that would leak the requestId
|
|
19
|
+
* to unrelated callers. Listeners that need to inherit context MUST be
|
|
20
|
+
* registered inside the `als.run()` callback.
|
|
21
|
+
*/
|
|
22
|
+
export declare function withRequestContext<T>(ctx: RequestContext, fn: () => T): T;
|
|
23
|
+
/**
|
|
24
|
+
* Convenience wrapper that mints a fresh UUID requestId and runs `fn` under it.
|
|
25
|
+
* Returns the requestId so callers can echo it back via response headers.
|
|
26
|
+
*/
|
|
27
|
+
export declare function runWithRequestId<T>(fn: () => T): {
|
|
28
|
+
requestId: string;
|
|
29
|
+
result: T;
|
|
30
|
+
};
|
|
31
|
+
/** Read the active request context, or `undefined` if not inside one. */
|
|
32
|
+
export declare function getRequestContext(): RequestContext | undefined;
|
|
33
|
+
/** Read just the active requestId, or `undefined` if not inside a context. */
|
|
34
|
+
export declare function getRequestId(): string | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Merge any active request context into the supplied context object,
|
|
37
|
+
* preferring explicit keys on the input. Existing `requestId` on `extra` wins
|
|
38
|
+
* (callers may explicitly override; e.g., for cross-daemon correlation).
|
|
39
|
+
*/
|
|
40
|
+
export declare function mergeRequestContext<T extends Record<string, unknown>>(extra: T): T;
|
|
41
|
+
//# sourceMappingURL=log-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-context.d.ts","sourceRoot":"","sources":["../../../src/services/logging/log-context.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAID;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEzE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,CAIjF;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,SAAS,CAE9D;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAIlF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeRequestContext = exports.getRequestId = exports.getRequestContext = exports.runWithRequestId = exports.withRequestContext = void 0;
|
|
4
|
+
const async_hooks_1 = require("async_hooks");
|
|
5
|
+
const crypto_1 = require("crypto");
|
|
6
|
+
const storage = new async_hooks_1.AsyncLocalStorage();
|
|
7
|
+
/**
|
|
8
|
+
* Run `fn` inside a fresh request context. Use ONLY at request entry edges
|
|
9
|
+
* (HTTP handlers, CLI command dispatch, daemon inbound boundaries).
|
|
10
|
+
*
|
|
11
|
+
* Never call from shared/reused infrastructure — that would leak the requestId
|
|
12
|
+
* to unrelated callers. Listeners that need to inherit context MUST be
|
|
13
|
+
* registered inside the `als.run()` callback.
|
|
14
|
+
*/
|
|
15
|
+
function withRequestContext(ctx, fn) {
|
|
16
|
+
return storage.run(ctx, fn);
|
|
17
|
+
}
|
|
18
|
+
exports.withRequestContext = withRequestContext;
|
|
19
|
+
/**
|
|
20
|
+
* Convenience wrapper that mints a fresh UUID requestId and runs `fn` under it.
|
|
21
|
+
* Returns the requestId so callers can echo it back via response headers.
|
|
22
|
+
*/
|
|
23
|
+
function runWithRequestId(fn) {
|
|
24
|
+
const requestId = (0, crypto_1.randomUUID)();
|
|
25
|
+
const result = withRequestContext({ requestId }, fn);
|
|
26
|
+
return { requestId, result };
|
|
27
|
+
}
|
|
28
|
+
exports.runWithRequestId = runWithRequestId;
|
|
29
|
+
/** Read the active request context, or `undefined` if not inside one. */
|
|
30
|
+
function getRequestContext() {
|
|
31
|
+
return storage.getStore();
|
|
32
|
+
}
|
|
33
|
+
exports.getRequestContext = getRequestContext;
|
|
34
|
+
/** Read just the active requestId, or `undefined` if not inside a context. */
|
|
35
|
+
function getRequestId() {
|
|
36
|
+
return storage.getStore()?.requestId;
|
|
37
|
+
}
|
|
38
|
+
exports.getRequestId = getRequestId;
|
|
39
|
+
/**
|
|
40
|
+
* Merge any active request context into the supplied context object,
|
|
41
|
+
* preferring explicit keys on the input. Existing `requestId` on `extra` wins
|
|
42
|
+
* (callers may explicitly override; e.g., for cross-daemon correlation).
|
|
43
|
+
*/
|
|
44
|
+
function mergeRequestContext(extra) {
|
|
45
|
+
const ctx = storage.getStore();
|
|
46
|
+
if (!ctx)
|
|
47
|
+
return extra;
|
|
48
|
+
return { ...ctx, ...extra };
|
|
49
|
+
}
|
|
50
|
+
exports.mergeRequestContext = mergeRequestContext;
|
|
51
|
+
//# sourceMappingURL=log-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-context.js","sourceRoot":"","sources":["../../../src/services/logging/log-context.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAChD,mCAAoC;AAgBpC,MAAM,OAAO,GAAG,IAAI,+BAAiB,EAAkB,CAAC;AAExD;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAI,GAAmB,EAAE,EAAW;IACpE,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC;AAFD,gDAEC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAI,EAAW;IAC7C,MAAM,SAAS,GAAG,IAAA,mBAAU,GAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IACrD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC;AAJD,4CAIC;AAED,yEAAyE;AACzE,SAAgB,iBAAiB;IAC/B,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC;AAFD,8CAEC;AAED,8EAA8E;AAC9E,SAAgB,YAAY;IAC1B,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC;AACvC,CAAC;AAFD,oCAEC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CAAoC,KAAQ;IAC7E,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC/B,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,EAAO,CAAC;AACnC,CAAC;AAJD,kDAIC"}
|
|
@@ -1,2 +1,10 @@
|
|
|
1
1
|
export declare function redactContext(context: Record<string, unknown> | undefined): Record<string, unknown>;
|
|
2
|
+
/**
|
|
3
|
+
* Redact sensitive values from a CLI argv array (e.g. for spawn-arg logging).
|
|
4
|
+
*
|
|
5
|
+
* Pairs every sensitive flag (`--token`, `--api-key`, etc.) with its following
|
|
6
|
+
* argument and replaces that argument with `[redacted]`. Non-sensitive args
|
|
7
|
+
* pass through unchanged.
|
|
8
|
+
*/
|
|
9
|
+
export declare function redactArgv(argv: readonly string[]): string[];
|
|
2
10
|
//# sourceMappingURL=log-redaction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-redaction.d.ts","sourceRoot":"","sources":["../../../src/services/logging/log-redaction.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"log-redaction.d.ts","sourceRoot":"","sources":["../../../src/services/logging/log-redaction.ts"],"names":[],"mappings":"AA0EA,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC3C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAW5D"}
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.redactContext = void 0;
|
|
4
|
-
|
|
3
|
+
exports.redactArgv = exports.redactContext = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Sensitive log key matcher (single source of truth).
|
|
6
|
+
*
|
|
7
|
+
* Add new patterns conservatively. Numeric/boolean values are passed through
|
|
8
|
+
* even when their key matches (e.g., `expires_at` epoch numbers stay readable);
|
|
9
|
+
* only string and object values are redacted.
|
|
10
|
+
*/
|
|
11
|
+
const SENSITIVE_KEY_PATTERN = /^(authorization|proxy[_-]?authorization|cookie|set-cookie|password|password_hash|secret|client[_-]?secret|token|auth[_-]?token|access[_-]?token|refresh[_-]?token|id[_-]?token|bearer|assertion|api[_-]?key|x[_-]?api[_-]?key|x[_-]?goog[_-]?api[_-]?key|management[_-]?key|copilot[_-]?token|cursor[_-]?session[_-]?key|oauth[_-]?code|auth[_-]?code)$/i;
|
|
12
|
+
/** CLI flags whose following argument should be redacted in argv arrays. */
|
|
13
|
+
const SENSITIVE_ARGV_FLAG_PATTERN = /^--(token|api[_-]?key|auth|auth[_-]?token|secret|bearer|password|client[_-]?secret|refresh[_-]?token|access[_-]?token|id[_-]?token)$/i;
|
|
14
|
+
/** Bearer/Basic/Token auth-scheme prefix in raw string values. */
|
|
15
|
+
const AUTH_SCHEME_VALUE_PATTERN = /^(Bearer|Basic|Token)\s+\S+/;
|
|
5
16
|
const MAX_STRING_LENGTH = 2000;
|
|
6
17
|
const MAX_DEPTH = 5;
|
|
7
18
|
function truncateString(value) {
|
|
@@ -10,6 +21,12 @@ function truncateString(value) {
|
|
|
10
21
|
}
|
|
11
22
|
return `${value.slice(0, MAX_STRING_LENGTH)}...[truncated]`;
|
|
12
23
|
}
|
|
24
|
+
function maskAuthSchemeValue(value) {
|
|
25
|
+
const match = AUTH_SCHEME_VALUE_PATTERN.exec(value);
|
|
26
|
+
if (!match)
|
|
27
|
+
return value;
|
|
28
|
+
return `${match[1]} [redacted]`;
|
|
29
|
+
}
|
|
13
30
|
function sanitizeValue(value, depth) {
|
|
14
31
|
if (value === null || value === undefined) {
|
|
15
32
|
return value;
|
|
@@ -18,7 +35,7 @@ function sanitizeValue(value, depth) {
|
|
|
18
35
|
return '[max-depth]';
|
|
19
36
|
}
|
|
20
37
|
if (typeof value === 'string') {
|
|
21
|
-
return truncateString(value);
|
|
38
|
+
return truncateString(maskAuthSchemeValue(value));
|
|
22
39
|
}
|
|
23
40
|
if (typeof value === 'number' || typeof value === 'boolean') {
|
|
24
41
|
return value;
|
|
@@ -50,4 +67,24 @@ function redactContext(context) {
|
|
|
50
67
|
return sanitizeValue(context, 0);
|
|
51
68
|
}
|
|
52
69
|
exports.redactContext = redactContext;
|
|
70
|
+
/**
|
|
71
|
+
* Redact sensitive values from a CLI argv array (e.g. for spawn-arg logging).
|
|
72
|
+
*
|
|
73
|
+
* Pairs every sensitive flag (`--token`, `--api-key`, etc.) with its following
|
|
74
|
+
* argument and replaces that argument with `[redacted]`. Non-sensitive args
|
|
75
|
+
* pass through unchanged.
|
|
76
|
+
*/
|
|
77
|
+
function redactArgv(argv) {
|
|
78
|
+
const out = [];
|
|
79
|
+
for (let i = 0; i < argv.length; i++) {
|
|
80
|
+
const arg = argv[i];
|
|
81
|
+
out.push(arg);
|
|
82
|
+
if (SENSITIVE_ARGV_FLAG_PATTERN.test(arg) && i + 1 < argv.length) {
|
|
83
|
+
out.push('[redacted]');
|
|
84
|
+
i++;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return out;
|
|
88
|
+
}
|
|
89
|
+
exports.redactArgv = redactArgv;
|
|
53
90
|
//# sourceMappingURL=log-redaction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-redaction.js","sourceRoot":"","sources":["../../../src/services/logging/log-redaction.ts"],"names":[],"mappings":";;;AAAA,MAAM,qBAAqB,GACzB,
|
|
1
|
+
{"version":3,"file":"log-redaction.js","sourceRoot":"","sources":["../../../src/services/logging/log-redaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
import type { LoggingConfig, LoggingLevel } from '../../config/unified-config-types';
|
|
2
2
|
export type { LoggingConfig, LoggingLevel };
|
|
3
|
+
/**
|
|
4
|
+
* Canonical request lifecycle stages.
|
|
5
|
+
*
|
|
6
|
+
* Order represents typical flow but stages may be skipped or repeated.
|
|
7
|
+
* - intake: inbound request received at an entry edge (HTTP handler, CLI dispatch)
|
|
8
|
+
* - route: destination/profile/target resolution
|
|
9
|
+
* - auth: authentication/authorization (token exchange, profile auth)
|
|
10
|
+
* - dispatch: outbound request prepared / child process spawned
|
|
11
|
+
* - upstream: upstream call in flight (provider HTTP / spawned child running)
|
|
12
|
+
* - transform: payload translation (request/response shape conversion)
|
|
13
|
+
* - respond: response written / dispatched to caller (latencyMs typically populated here)
|
|
14
|
+
* - cleanup: error path, abort, teardown
|
|
15
|
+
*/
|
|
16
|
+
export type LogStage = 'intake' | 'route' | 'auth' | 'dispatch' | 'upstream' | 'transform' | 'respond' | 'cleanup';
|
|
17
|
+
export declare const LOG_STAGES: readonly LogStage[];
|
|
18
|
+
export interface LogErrorInfo {
|
|
19
|
+
name: string;
|
|
20
|
+
message: string;
|
|
21
|
+
code?: string;
|
|
22
|
+
stack?: string;
|
|
23
|
+
}
|
|
3
24
|
export interface LogEntry {
|
|
4
25
|
id: string;
|
|
5
26
|
timestamp: string;
|
|
@@ -10,6 +31,14 @@ export interface LogEntry {
|
|
|
10
31
|
processId: number;
|
|
11
32
|
runId: string;
|
|
12
33
|
context?: Record<string, unknown>;
|
|
34
|
+
/** Correlates entries belonging to a single inbound request across stages. */
|
|
35
|
+
requestId?: string;
|
|
36
|
+
/** Lifecycle stage tag — see {@link LogStage}. */
|
|
37
|
+
stage?: LogStage;
|
|
38
|
+
/** Elapsed time in milliseconds, typically attached to `respond`/`cleanup`. */
|
|
39
|
+
latencyMs?: number;
|
|
40
|
+
/** Structured error metadata; never stores raw token strings. */
|
|
41
|
+
error?: LogErrorInfo;
|
|
13
42
|
}
|
|
14
43
|
export interface LogSourceSummary {
|
|
15
44
|
source: string;
|
|
@@ -27,4 +56,5 @@ export interface ReadLogEntriesOptions {
|
|
|
27
56
|
export declare const LOG_LEVELS: readonly LoggingLevel[];
|
|
28
57
|
export declare function shouldWriteLogLevel(level: LoggingLevel, configuredLevel: LoggingLevel): boolean;
|
|
29
58
|
export declare function isLoggingLevel(value: string | undefined): value is LoggingLevel;
|
|
59
|
+
export declare function isLogStage(value: string | undefined): value is LogStage;
|
|
30
60
|
//# sourceMappingURL=log-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-types.d.ts","sourceRoot":"","sources":["../../../src/services/logging/log-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAErF,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;AAE5C,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"log-types.d.ts","sourceRoot":"","sources":["../../../src/services/logging/log-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAErF,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;AAE5C;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,QAAQ,GAChB,QAAQ,GACR,OAAO,GACP,MAAM,GACN,UAAU,GACV,UAAU,GACV,WAAW,GACX,SAAS,GACT,SAAS,CAAC;AAEd,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,EAShC,CAAC;AAEX,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,YAAY,EAAuC,CAAC;AAStF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,GAAG,OAAO,CAE/F;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,YAAY,CAE/E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,QAAQ,CAEvE"}
|