@event4u/agent-config 4.3.0 → 4.6.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.
Files changed (67) hide show
  1. package/.agent-src/commands/agents/user/init.md +7 -13
  2. package/.agent-src/commands/agents/user/show.md +4 -4
  3. package/.agent-src/commands/post-as/me.md +6 -6
  4. package/.agent-src/contexts/execution/autonomy-mechanics.md +1 -1
  5. package/.agent-src/contexts/execution/cheap-question-mechanics.md +4 -0
  6. package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  7. package/.claude-plugin/marketplace.json +1 -1
  8. package/CHANGELOG.md +28 -227
  9. package/config/discovery/packs.yml +9 -1
  10. package/config/discovery/workspaces.yml +14 -1
  11. package/dist/cli/agent-config.js +15 -10
  12. package/dist/cli/agent-config.js.map +1 -1
  13. package/dist/cli/commands/uiServe.js +27 -11
  14. package/dist/cli/commands/uiServe.js.map +1 -1
  15. package/dist/cli/registry.js +1 -1
  16. package/dist/cli/registry.js.map +1 -1
  17. package/dist/discovery/deprecation-report.md +1 -1
  18. package/dist/discovery/discovery-manifest.json +51 -8
  19. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  20. package/dist/discovery/discovery-manifest.summary.md +3 -3
  21. package/dist/discovery/orphan-report.md +1 -1
  22. package/dist/discovery/packs.json +25 -4
  23. package/dist/discovery/trust-report.md +1 -1
  24. package/dist/discovery/workspaces.json +4 -4
  25. package/dist/install/selectedTools.js +52 -0
  26. package/dist/install/selectedTools.js.map +1 -0
  27. package/dist/install/toolDetection.js +104 -0
  28. package/dist/install/toolDetection.js.map +1 -0
  29. package/dist/mcp/registry-manifest.json +3 -3
  30. package/dist/server/app.js +36 -0
  31. package/dist/server/app.js.map +1 -1
  32. package/dist/server/routes/ping.js +17 -0
  33. package/dist/server/routes/ping.js.map +1 -1
  34. package/dist/server/routes/wizard.js +280 -34
  35. package/dist/server/routes/wizard.js.map +1 -1
  36. package/dist/server/serverInfo.js +54 -0
  37. package/dist/server/serverInfo.js.map +1 -0
  38. package/dist/shared/userMd/formAdapter.js +1 -5
  39. package/dist/shared/userMd/formAdapter.js.map +1 -1
  40. package/dist/shared/userMd/schema.js +2 -1
  41. package/dist/shared/userMd/schema.js.map +1 -1
  42. package/dist/ui/assets/index-BAJQeVdX.js +40 -0
  43. package/dist/ui/assets/index-BAJQeVdX.js.map +1 -0
  44. package/dist/ui/assets/index-BbWWuFrF.css +1 -0
  45. package/dist/ui/index.html +2 -2
  46. package/docs/archive/CHANGELOG-pre-4.0.0.md +80 -0
  47. package/docs/archive/CHANGELOG-pre-4.5.0.md +289 -0
  48. package/docs/contracts/agent-user-schema.md +1 -3
  49. package/docs/contracts/discovery-manifest.schema.json +3 -1
  50. package/docs/contracts/gui-wizard.md +103 -8
  51. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +27 -0
  52. package/docs/decisions/ADR-021-deployment-shape.md +2 -2
  53. package/docs/deploy/connector-setup.md +2 -2
  54. package/docs/deploy/policy-cookbook.md +2 -2
  55. package/docs/examples/agent-user.example.md +0 -1
  56. package/package.json +1 -1
  57. package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
  58. package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
  59. package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
  60. package/scripts/build_discovery_manifest.py +4 -0
  61. package/scripts/condense.py +56 -1
  62. package/scripts/condense_memory.py +8 -2
  63. package/scripts/install.py +89 -43
  64. package/scripts/lint_discovery_vocabulary.py +8 -0
  65. package/dist/ui/assets/index-BDAhhpDV.js +0 -40
  66. package/dist/ui/assets/index-BDAhhpDV.js.map +0 -1
  67. package/dist/ui/assets/index-BXZILUxe.css +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
- "checksum": "sha256:94582bc41fa8f693aa9df64d8efec370e3b505e98de4fcc44c7c490ea5afddf4",
3
- "generated_at": "2026-05-27T07:41:42Z",
4
- "scanner_version": "b59a6d49e745",
2
+ "checksum": "sha256:eb7494e53428947d792e0377cb59e043457819ad3fff0b7ff6bc1011134be766",
3
+ "generated_at": "2026-05-28T01:05:43Z",
4
+ "scanner_version": "d75eba636abb",
5
5
  "workspaces": [
6
6
  {
7
7
  "artefact_count": 125,
@@ -250,7 +250,7 @@
250
250
  ],
251
251
  "description": "Cashflow, forecasting, DCF, board reporting.",
252
252
  "id": "finance",
253
- "label": "Finance / CFO",
253
+ "label": "Finance",
254
254
  "optional_packs": [
255
255
  "finance-advanced"
256
256
  ],
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Persisted record of the AI tools the user actually selected in the wizard,
3
+ * at `~/.event4u/agent-config/wizard-tools.json`. This is the user's prior
4
+ * *selection* — distinct from `installed.lock` (every tool agent-config was
5
+ * deployed to, which for an `--tools=all` install is the full set) and from
6
+ * machine tool *detection*.
7
+ *
8
+ * Written by the apply route on a real (non-dry-run) wizard-v2 apply, and
9
+ * read by `detect-tools` so Step 1 pre-selects exactly the prior selection on
10
+ * a repeat run. Empty / missing → first run → Step 1 falls back to
11
+ * pre-selecting every installed tool.
12
+ *
13
+ * `AGENT_CONFIG_WIZARD_TOOLS` overrides the path (tests only).
14
+ */
15
+ import { readFileSync, writeFileSync, mkdirSync } from 'node:fs';
16
+ import { homedir } from 'node:os';
17
+ import { resolve, dirname } from 'node:path';
18
+ function selectedToolsPath() {
19
+ const override = process.env['AGENT_CONFIG_WIZARD_TOOLS'];
20
+ if (override !== undefined && override.length > 0)
21
+ return override;
22
+ return resolve(homedir(), '.event4u', 'agent-config', 'wizard-tools.json');
23
+ }
24
+ export function writeSelectedTools(tools) {
25
+ try {
26
+ const path = selectedToolsPath();
27
+ mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
28
+ writeFileSync(path, `${JSON.stringify({ tools }, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
29
+ }
30
+ catch {
31
+ // Best-effort: a failed write just means the next run falls back to
32
+ // pre-selecting installed tools.
33
+ }
34
+ }
35
+ /**
36
+ * Return the recorded selection, or `[]` when absent / unreadable. Optionally
37
+ * intersect with the known-tool set so a stale id never surfaces.
38
+ */
39
+ export function readSelectedTools(knownIds) {
40
+ try {
41
+ const raw = readFileSync(selectedToolsPath(), 'utf8');
42
+ const parsed = JSON.parse(raw);
43
+ const tools = Array.isArray(parsed.tools)
44
+ ? parsed.tools.filter((t) => typeof t === 'string')
45
+ : [];
46
+ return knownIds === undefined ? tools : tools.filter((t) => knownIds.has(t));
47
+ }
48
+ catch {
49
+ return [];
50
+ }
51
+ }
52
+ //# sourceMappingURL=selectedTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectedTools.js","sourceRoot":"","sources":["../../src/install/selectedTools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C,SAAS,iBAAiB;IACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAC1D,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IACnE,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAe;IAC9C,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;QACjC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtG,CAAC;IAAC,MAAM,CAAC;QACL,oEAAoE;QACpE,iCAAiC;IACrC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAA8B;IAC5D,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,YAAY,CAAC,iBAAiB,EAAE,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAwB,CAAC;QACtD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YACrC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;YAChE,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Native AI-tool presence detection (road-to-wizard-ux-improvements § Phase 2).
3
+ *
4
+ * Distinct from `detectToolPresence` (detect.ts), which checks the *project*
5
+ * for agent-config bridge dirs ("we set up a bridge here"). This module
6
+ * answers "is the AI tool itself installed on this machine?" by probing the
7
+ * user's home dir, well-known app bundles, and `$PATH` — so the wizard's
8
+ * Step-1 list can pre-select detected tools (first run) and show a per-tool
9
+ * installed/not-installed badge.
10
+ *
11
+ * The signal table is intentionally data-driven and best-effort: a tool with
12
+ * no reliable signal (e.g. a VS Code extension) simply reports `false`
13
+ * (badge = not installed, no pre-select) — false negatives are acceptable,
14
+ * false positives are not. Extend `TOOL_SIGNALS` as new tools/signals are
15
+ * learned; that is the single place to maintain (the accepted trade-off).
16
+ */
17
+ import { existsSync } from 'node:fs';
18
+ import { homedir } from 'node:os';
19
+ import { delimiter, join } from 'node:path';
20
+ /**
21
+ * Best-effort signal table keyed by the tool id used in the wizard's
22
+ * `VALID_TOOLS` (src/ui/wizard/state.ts). Keep ids in sync with that list.
23
+ */
24
+ const TOOL_SIGNALS = {
25
+ 'claude-code': { bins: ['claude'], homePaths: ['.claude', '.claude.json', '.config/claude'] },
26
+ 'claude-desktop': { absPaths: ['/Applications/Claude.app'], homePaths: ['Library/Application Support/Claude', '.config/Claude'] },
27
+ 'cursor': { bins: ['cursor'], absPaths: ['/Applications/Cursor.app'], homePaths: ['.cursor'] },
28
+ 'windsurf': { bins: ['windsurf'], absPaths: ['/Applications/Windsurf.app'], homePaths: ['.codeium/windsurf'] },
29
+ 'cline': { homePaths: ['Documents/Cline'] },
30
+ 'gemini-cli': { bins: ['gemini'], homePaths: ['.gemini'] },
31
+ 'copilot': { bins: ['copilot'], homePaths: ['.config/github-copilot'] },
32
+ 'augment': { bins: ['auggie', 'augment'], homePaths: ['.augment'] },
33
+ 'aider': { bins: ['aider'], homePaths: ['.aider.conf.yml'] },
34
+ 'codex': { bins: ['codex'], homePaths: ['.codex'] },
35
+ 'roocode': {},
36
+ 'continue': { homePaths: ['.continue'] },
37
+ 'kilocode': {},
38
+ 'zed': { bins: ['zed'], absPaths: ['/Applications/Zed.app'], homePaths: ['.config/zed'] },
39
+ 'jetbrains': { homePaths: ['Library/Application Support/JetBrains', '.config/JetBrains'] },
40
+ 'kiro': { bins: ['kiro'], absPaths: ['/Applications/Kiro.app'], homePaths: ['.kiro'] },
41
+ 'qoder': { absPaths: ['/Applications/Qoder.app'], homePaths: ['.qoder'] },
42
+ 'opencode': { bins: ['opencode'], homePaths: ['.opencode', '.config/opencode'] },
43
+ 'trae': { absPaths: ['/Applications/Trae.app'], homePaths: ['.trae'] },
44
+ 'antigravity': { absPaths: ['/Applications/Antigravity.app'], homePaths: ['.antigravity'] },
45
+ 'codebuddy': { homePaths: ['.codebuddy'] },
46
+ 'droid': { bins: ['droid'], homePaths: ['.factory', '.droid'] },
47
+ 'warp': { absPaths: ['/Applications/Warp.app', '/Applications/Warp.app/Contents'], homePaths: ['.warp', '.local/share/warp-terminal'] },
48
+ };
49
+ /** Tool ids this module knows how to probe (the wizard's full tool set). */
50
+ export function knownToolIds() {
51
+ return Object.keys(TOOL_SIGNALS);
52
+ }
53
+ /**
54
+ * Is an executable named `name` resolvable on `$PATH`? Exported for one-off
55
+ * presence checks (e.g. `rtk` on the Editor-and-tooling step). Defaults to
56
+ * `process.env.PATH`.
57
+ */
58
+ export function isBinaryOnPath(name, pathEnv) {
59
+ return binOnPath(name, pathEnv ?? process.env['PATH'] ?? '');
60
+ }
61
+ function binOnPath(name, pathEnv) {
62
+ if (pathEnv.length === 0)
63
+ return false;
64
+ for (const dir of pathEnv.split(delimiter)) {
65
+ if (dir.length === 0)
66
+ continue;
67
+ if (existsSync(join(dir, name)))
68
+ return true;
69
+ // Windows-style executables.
70
+ if (existsSync(join(dir, `${name}.exe`)) || existsSync(join(dir, `${name}.cmd`)))
71
+ return true;
72
+ }
73
+ return false;
74
+ }
75
+ function isToolInstalled(signal, home, pathEnv) {
76
+ for (const rel of signal.homePaths ?? []) {
77
+ if (existsSync(join(home, rel)))
78
+ return true;
79
+ }
80
+ for (const abs of signal.absPaths ?? []) {
81
+ if (existsSync(abs))
82
+ return true;
83
+ }
84
+ for (const bin of signal.bins ?? []) {
85
+ if (binOnPath(bin, pathEnv))
86
+ return true;
87
+ }
88
+ return false;
89
+ }
90
+ /**
91
+ * Probe every known tool and return a `{ <toolId>: installed }` map. Tools
92
+ * with no reliable signal report `false`. Pure w.r.t. injected `home`/`pathEnv`
93
+ * (only reads the filesystem), so it's safe to call per wizard boot.
94
+ */
95
+ export function detectInstalledTools(opts = {}) {
96
+ const home = opts.home ?? homedir();
97
+ const pathEnv = opts.pathEnv ?? process.env['PATH'] ?? '';
98
+ const out = {};
99
+ for (const [id, signal] of Object.entries(TOOL_SIGNALS)) {
100
+ out[id] = isToolInstalled(signal, home, pathEnv);
101
+ }
102
+ return out;
103
+ }
104
+ //# sourceMappingURL=toolDetection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolDetection.js","sourceRoot":"","sources":["../../src/install/toolDetection.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "discovery": {
3
3
  "artefact_count": 432,
4
- "scanner_version": "b59a6d49e745"
4
+ "scanner_version": "d75eba636abb"
5
5
  },
6
- "generated_at": "2026-05-27",
6
+ "generated_at": "2026-05-28",
7
7
  "package": {
8
8
  "description": "Universal AI Agent OS \u2014 audited skills, governance rules, commands, and templates for AI coding tools (Claude Code, Cursor, Windsurf, Copilot).",
9
9
  "homepage": "https://github.com/event4u-app/agent-config#readme",
10
10
  "name": "@event4u/agent-config",
11
11
  "repository": "https://github.com/event4u-app/agent-config",
12
- "version": "4.3.0"
12
+ "version": "4.6.0"
13
13
  },
14
14
  "registries": [
15
15
  {
@@ -80,6 +80,42 @@ export async function createApp(opts) {
80
80
  }
81
81
  return undefined;
82
82
  });
83
+ // Browser-lifecycle watchdog (real-serve only — see CreateAppOptions).
84
+ if (opts.idleShutdown !== undefined) {
85
+ const { onIdle } = opts.idleShutdown;
86
+ const timeoutMs = opts.idleShutdown.timeoutMs ?? 1_800_000;
87
+ const intervalMs = opts.idleShutdown.intervalMs ?? 30_000;
88
+ let lastActivity = 0; // 0 = disarmed: no client has connected yet.
89
+ let fired = false;
90
+ const timer = setInterval(() => {
91
+ if (lastActivity === 0)
92
+ return; // not yet armed
93
+ if (Date.now() - lastActivity > timeoutMs)
94
+ fire();
95
+ }, intervalMs);
96
+ function fire() {
97
+ if (fired)
98
+ return;
99
+ fired = true;
100
+ clearInterval(timer);
101
+ void onIdle();
102
+ }
103
+ // Never let the watchdog alone keep the process alive.
104
+ if (typeof timer.unref === 'function')
105
+ timer.unref();
106
+ app.addHook('onClose', async () => { clearInterval(timer); });
107
+ // Any authed /api/* request marks the client alive and arms the
108
+ // backstop. The dedicated shutdown beacon fires immediately.
109
+ app.addHook('onRequest', async (request) => {
110
+ if (request.url.startsWith('/api/'))
111
+ lastActivity = Date.now();
112
+ return undefined;
113
+ });
114
+ app.post('/api/v1/shutdown', async () => {
115
+ fire();
116
+ return { ok: true };
117
+ });
118
+ }
83
119
  await app.register(fastifyStatic, {
84
120
  root: opts.uiDistDir,
85
121
  prefix: '/',
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,17 @@
8
8
  */
9
9
  import { z } from 'zod';
10
10
  import { readFileSync } from 'node:fs';
11
+ import { userInfo } from 'node:os';
11
12
  import { PACKAGE_JSON } from '../../cli/paths.js';
13
+ function systemUserName() {
14
+ try {
15
+ const name = userInfo().username;
16
+ return typeof name === 'string' ? name : '';
17
+ }
18
+ catch {
19
+ return '';
20
+ }
21
+ }
12
22
  export const PingResponseSchema = z.object({
13
23
  ok: z.literal(true),
14
24
  version: z.string().min(1),
@@ -27,6 +37,12 @@ export const PingResponseSchema = z.object({
27
37
  * operator pinned `writeRoot` via `--project`.
28
38
  */
29
39
  projectScopeAvailable: z.boolean(),
40
+ /**
41
+ * Best-effort OS account name (e.g. `matze`), used to pre-fill the
42
+ * welcome step's name field on a fresh wizard. Empty string when the
43
+ * platform does not expose it.
44
+ */
45
+ systemUser: z.string(),
30
46
  });
31
47
  function readPackageVersion() {
32
48
  try {
@@ -48,6 +64,7 @@ export function pingRoute(opts) {
48
64
  mode: opts.mode,
49
65
  dryRun: opts.dryRun === true,
50
66
  projectScopeAvailable: opts.projectScopeRoot !== undefined && opts.projectScopeRoot !== null,
67
+ systemUser: systemUserName(),
51
68
  };
52
69
  return response;
53
70
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ping.js","sourceRoot":"","sources":["../../../src/server/routes/ping.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B;;;OAGG;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB;;;;;OAKG;IACH,qBAAqB,EAAE,CAAC,CAAC,OAAO,EAAE;CACrC,CAAC,CAAC;AAIH,SAAS,kBAAkB;IACvB,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAA0B,CAAC;QACpF,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,OAAO,CAAC;IACnB,CAAC;AACL,CAAC;AAcD,MAAM,UAAU,SAAS,CAAC,IAAsB;IAC5C,MAAM,MAAM,GAAuB,KAAK,EAAE,GAAoB,EAAE,EAAE;QAC9D,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;YAC/B,MAAM,QAAQ,GAAiB;gBAC3B,EAAE,EAAE,IAAI;gBACR,OAAO,EAAE,kBAAkB,EAAE;gBAC7B,WAAW,EAAE,IAAI,CAAC,SAAS;gBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI;gBAC5B,qBAAqB,EAAE,IAAI,CAAC,gBAAgB,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI;aAC/F,CAAC;YACF,OAAO,QAAQ,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IACF,OAAO,MAAM,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"ping.js","sourceRoot":"","sources":["../../../src/server/routes/ping.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,SAAS,cAAc;IACnB,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC,QAAQ,CAAC;QACjC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B;;;OAGG;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB;;;;;OAKG;IACH,qBAAqB,EAAE,CAAC,CAAC,OAAO,EAAE;IAClC;;;;OAIG;IACH,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACzB,CAAC,CAAC;AAIH,SAAS,kBAAkB;IACvB,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAA0B,CAAC;QACpF,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,OAAO,CAAC;IACnB,CAAC;AACL,CAAC;AAcD,MAAM,UAAU,SAAS,CAAC,IAAsB;IAC5C,MAAM,MAAM,GAAuB,KAAK,EAAE,GAAoB,EAAE,EAAE;QAC9D,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;YAC/B,MAAM,QAAQ,GAAiB;gBAC3B,EAAE,EAAE,IAAI;gBACR,OAAO,EAAE,kBAAkB,EAAE;gBAC7B,WAAW,EAAE,IAAI,CAAC,SAAS;gBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI;gBAC5B,qBAAqB,EAAE,IAAI,CAAC,gBAAgB,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI;gBAC5F,UAAU,EAAE,cAAc,EAAE;aAC/B,CAAC;YACF,OAAO,QAAQ,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IACF,OAAO,MAAM,CAAC;AAClB,CAAC"}