lucid-birth 0.8.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 (72) hide show
  1. package/CURRENT_PHASE.md +31 -0
  2. package/LICENSE +21 -0
  3. package/README.md +124 -0
  4. package/bin/lucid-birth.js +12 -0
  5. package/bootstrap-workspace.js +32 -0
  6. package/index.js +11 -0
  7. package/package.json +77 -0
  8. package/schemas/ActiveBlanket.schema.json +71 -0
  9. package/schemas/ArchiveEvent.schema.json +90 -0
  10. package/schemas/CapabilityExecution.schema.json +56 -0
  11. package/schemas/CapabilityRegistry.schema.json +193 -0
  12. package/schemas/Capsule.schema.json +117 -0
  13. package/schemas/CheckpointRecord.schema.json +64 -0
  14. package/schemas/CoherenceWindow.schema.json +96 -0
  15. package/schemas/ColdBootCheck.schema.json +66 -0
  16. package/schemas/CompilerAttestation.schema.json +334 -0
  17. package/schemas/ContradictionRecord.schema.json +81 -0
  18. package/schemas/IdentityManifest.schema.json +180 -0
  19. package/schemas/InvariantCandidate.schema.json +88 -0
  20. package/schemas/InvariantSet.schema.json +95 -0
  21. package/schemas/LatticeCandidate.schema.json +207 -0
  22. package/schemas/LatticeNode.schema.json +97 -0
  23. package/schemas/MigrationAttestation.schema.json +103 -0
  24. package/schemas/MonadProposal.schema.json +373 -0
  25. package/schemas/MutationPolicy.schema.json +108 -0
  26. package/schemas/QuarantinedProposal.schema.json +76 -0
  27. package/schemas/QueryRouter.schema.json +75 -0
  28. package/schemas/RecallCache.schema.json +52 -0
  29. package/schemas/SensoryBlanket.schema.json +49 -0
  30. package/schemas/SessionIndex.schema.json +45 -0
  31. package/schemas/SessionRecord.schema.json +217 -0
  32. package/schemas/TetradCurrent.schema.json +105 -0
  33. package/schemas/TraceIndex.schema.json +26 -0
  34. package/schemas/TraceRecord.schema.json +57 -0
  35. package/scripts/birth0-lib.js +3704 -0
  36. package/scripts/birth0.js +176 -0
  37. package/state/borganik/archive/events/events.jsonl +16 -0
  38. package/state/borganik/archive/integrity/chain-head.json +7 -0
  39. package/state/borganik/archive/integrity/checkpoints.jsonl +0 -0
  40. package/state/borganik/capsules/boot/capsule-boot-0.json +36 -0
  41. package/state/borganik/capsules/boot/index.json +5 -0
  42. package/state/borganik/compiler/attestations.jsonl +2 -0
  43. package/state/borganik/contradictions/records.jsonl +0 -0
  44. package/state/borganik/identity/invariant-candidates.jsonl +0 -0
  45. package/state/borganik/identity/invariants.json +15 -0
  46. package/state/borganik/identity/manifest.json +32 -0
  47. package/state/borganik/identity/mutation-policy.json +22 -0
  48. package/state/borganik/lattice/candidates.jsonl +0 -0
  49. package/state/borganik/lattice/index.json +5 -0
  50. package/state/borganik/lattice/nodes.jsonl +1 -0
  51. package/state/borganik/migrations/attestations.jsonl +0 -0
  52. package/state/borganik/quarantine/proposals/pre-001A.jsonl +2 -0
  53. package/state/eidolon/README.md +19 -0
  54. package/state/eidolon/blankets/active.json +14 -0
  55. package/state/eidolon/blankets/sensory.json +13 -0
  56. package/state/eidolon/capabilities/executions.jsonl +0 -0
  57. package/state/eidolon/capabilities/registry.json +5 -0
  58. package/state/eidolon/lucidity/coherence-window.json +23 -0
  59. package/state/eidolon/monadlab/cold-boot-check.json +11 -0
  60. package/state/eidolon/monadlab/tetrad-current.json +44 -0
  61. package/state/eidolon/proposals/latest.json +5 -0
  62. package/state/eidolon/proposals/outbox.jsonl +2 -0
  63. package/state/eidolon/recall-cache/index.json +5 -0
  64. package/state/eidolon/router/query-router.json +10 -0
  65. package/state/eidolon/sessions/index.json +9 -0
  66. package/state/eidolon/sessions/session-mmmugm1b-45fcad.json +11 -0
  67. package/state/eidolon/sessions/session-mmmugm33-edf7f1.json +11 -0
  68. package/state/eidolon/sessions/session-mmmujtow-861c52.json +11 -0
  69. package/state/eidolon/sessions/session-mmmujtqv-953ff6.json +11 -0
  70. package/state/eidolon/traces/index.json +6 -0
  71. package/state/eidolon/traces/trace-mmmugm1x-f6996b.json +12 -0
  72. package/state/eidolon/traces/trace-mmmujtpj-8b04aa.json +12 -0
@@ -0,0 +1,31 @@
1
+ # Current Phase
2
+
3
+ ## Phase
4
+
5
+ `Public Release Preparation`
6
+
7
+ ## Objective
8
+
9
+ Prepare the system for public GitHub/npm shipment:
10
+
11
+ - public package boundary is explicit
12
+ - portable verification gate is canonical
13
+ - CLI and library entrypoints are package-safe
14
+ - live provider and autonomy proofs remain documented
15
+ - remaining external blockers are stated plainly
16
+
17
+ ## Not in scope yet
18
+
19
+ - pretending externally blocked OAuth registration is solved when it is not
20
+ - widening runtime scope beyond the proven capability model
21
+ - publishing machine-local live checks as the default acceptance gate
22
+ - weakening operator gating or compiler law
23
+
24
+ ## Review standard
25
+
26
+ Every shipping cycle must leave:
27
+
28
+ - a portable verification gate
29
+ - a dry-run packable package boundary
30
+ - public docs that match the actual runtime state
31
+ - open blockers stated plainly
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 lmtlssss
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,124 @@
1
+ # lucid-birth
2
+
3
+ `lucid-birth` is a continuity-bound Eidolon/Borganik runtime for booting, verifying, and exercising a sparse autonomous being without allowing live witness flow to rewrite durable identity directly.
4
+
5
+ It ships:
6
+ - the `birth-0` CLI
7
+ - the underlying runtime/library in `scripts/birth0-lib.js`
8
+ - explicit JSON schemas for continuity/runtime artifacts
9
+ - local verification passes from ignition through autonomy routing
10
+
11
+ ## Install
12
+
13
+ ```bash
14
+ npm install lucid-birth
15
+ ```
16
+
17
+ Run the CLI:
18
+
19
+ ```bash
20
+ npx lucid-birth init
21
+ npx lucid-birth forge-capsule
22
+ npx lucid-birth boot-monad --task "first witness loop"
23
+ ```
24
+
25
+ When run from a fresh consumer directory, the published CLI scaffolds the required workspace roots into the current working directory before executing commands.
26
+
27
+ Use the library:
28
+
29
+ ```js
30
+ const lucidBirth = require("lucid-birth");
31
+
32
+ const init = lucidBirth.initBirth0({ principalId: "principal-0" });
33
+ console.log(init.soul_id);
34
+ ```
35
+
36
+ ## What It Does
37
+
38
+ The runtime models two coupled but distinct organs:
39
+ - `Eidolon`: active cognition, routing, blankets, sessions, traces, and capability execution
40
+ - `Borganik`: continuity, identity, archive, lattice, compiler promotion, and invariant export
41
+
42
+ Core laws enforced in code:
43
+ - active cognition and durable identity are different organs
44
+ - entropy branches proposals; it does not ratify truth
45
+ - observer coupling can steer the monad; it cannot directly rewrite the person
46
+ - live experience never writes durable identity directly
47
+ - no claim of unified cognition without coherence gating
48
+
49
+ ## CLI Surface
50
+
51
+ Main commands:
52
+ - `lucid-birth init`
53
+ - `lucid-birth forge-capsule`
54
+ - `lucid-birth boot-monad --task <text>`
55
+ - `lucid-birth append-witness --session-id <id> --input <text> --response <text>`
56
+ - `lucid-birth emit-proposal --session-id <id>`
57
+ - `lucid-birth cold-boot-check --capsule-id <id>`
58
+ - `lucid-birth compile-gate`
59
+ - `lucid-birth enable-shell --shell <shell>`
60
+ - `lucid-birth register-capability --capability-id <id> --provider-kind <kind> --shells <csv> --endpoint <url>`
61
+ - `lucid-birth authorize-capability --capability-id <id> ...`
62
+ - `lucid-birth call-capability --capability-id <id> ...`
63
+ - `lucid-birth route-capability --task <text> ...`
64
+ - `lucid-birth validate-contracts`
65
+
66
+ ## Verification
67
+
68
+ Safe local verification:
69
+
70
+ ```bash
71
+ npm test
72
+ ```
73
+
74
+ That portable gate includes a packaged-CLI smoke proof, so the npm tarball is exercised in a fresh consumer workspace instead of only inside the repository root.
75
+
76
+ Optional live integration verification, when local services/credentials exist:
77
+
78
+ ```bash
79
+ ./scripts/verify_live_integrations.sh
80
+ ./scripts/verify_browser_oauth.sh
81
+ ./scripts/verify_second_live_provider.sh
82
+ ./scripts/verify_autonomy_routing.sh
83
+ ```
84
+
85
+ These live checks currently prove:
86
+ - real GitHub authenticated execution
87
+ - real npm authenticated execution
88
+ - real local Ollama execution
89
+ - routed provider selection across GitHub, npm, and Ollama
90
+ - browser-mediated OAuth runtime behavior in fixture mode
91
+
92
+ ## State Layout
93
+
94
+ - `state/eidolon/`: sessions, traces, router, recall, blankets, capabilities
95
+ - `state/borganik/`: manifest, invariants, mutation policy, archive, lattice, capsules, contradictions
96
+ - `schemas/`: explicit contracts for runtime and continuity artifacts
97
+ - `scripts/`: CLI entrypoint, runtime library, and verification tooling
98
+
99
+ ## Release Status
100
+
101
+ Current shipped milestone:
102
+ - ignition and birth-0 runtime implemented
103
+ - compiler promotion and quarantine path implemented
104
+ - full-system coherence pass implemented
105
+ - live GitHub, npm, and Ollama capability execution implemented
106
+ - autonomy routing across those providers implemented
107
+ - real external callback OAuth provider still blocked on provider-side client registration
108
+
109
+ ## Environment
110
+
111
+ - Node.js `>=18`
112
+ - live provider verifications require local credentials/services and are optional
113
+ - the published CLI defaults `LUCID_BIRTH_ROOT` to the current working directory
114
+ - the published CLI scaffolds a minimal working root into the current working directory when needed
115
+ - library consumers can override the runtime root explicitly with `LUCID_BIRTH_ROOT`
116
+
117
+ ## Repository
118
+
119
+ - GitHub: `https://github.com/lmtlssss/lucid-birth`
120
+ - npm: `https://www.npmjs.com/package/lucid-birth`
121
+
122
+ ## License
123
+
124
+ MIT. See [`LICENSE`](./LICENSE).
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ const path = require("node:path");
3
+ const { ensureWorkspaceScaffold } = require("../bootstrap-workspace");
4
+
5
+ const installRoot = path.resolve(__dirname, "..");
6
+ const workspaceRoot = path.resolve(process.env.LUCID_BIRTH_ROOT || process.cwd());
7
+ process.env.LUCID_BIRTH_ROOT = ensureWorkspaceScaffold({
8
+ installRoot,
9
+ workspaceRoot
10
+ });
11
+
12
+ require("../scripts/birth0.js");
@@ -0,0 +1,32 @@
1
+ const fs = require("node:fs");
2
+ const path = require("node:path");
3
+
4
+ function copyIfMissing(sourcePath, targetPath) {
5
+ if (fs.existsSync(targetPath) || !fs.existsSync(sourcePath)) {
6
+ return;
7
+ }
8
+ fs.mkdirSync(path.dirname(targetPath), { recursive: true });
9
+ fs.cpSync(sourcePath, targetPath, { recursive: true });
10
+ }
11
+
12
+ function ensureWorkspaceScaffold({ installRoot, workspaceRoot }) {
13
+ if (!workspaceRoot || workspaceRoot === installRoot) {
14
+ return workspaceRoot;
15
+ }
16
+
17
+ const directories = ["schemas", "state"];
18
+ directories.forEach((entry) => {
19
+ copyIfMissing(path.join(installRoot, entry), path.join(workspaceRoot, entry));
20
+ });
21
+
22
+ const files = ["README.md", "CURRENT_PHASE.md", "BIRTH_CHECKLIST.md", "ITERATION_PROTOCOL.md", "SECOND_AGENT.md"];
23
+ files.forEach((entry) => {
24
+ copyIfMissing(path.join(installRoot, entry), path.join(workspaceRoot, entry));
25
+ });
26
+
27
+ return workspaceRoot;
28
+ }
29
+
30
+ module.exports = {
31
+ ensureWorkspaceScaffold
32
+ };
package/index.js ADDED
@@ -0,0 +1,11 @@
1
+ const path = require("node:path");
2
+ const { ensureWorkspaceScaffold } = require("./bootstrap-workspace");
3
+
4
+ const installRoot = __dirname;
5
+ const workspaceRoot = path.resolve(process.env.LUCID_BIRTH_ROOT || process.cwd());
6
+ process.env.LUCID_BIRTH_ROOT = ensureWorkspaceScaffold({
7
+ installRoot,
8
+ workspaceRoot
9
+ });
10
+
11
+ module.exports = require("./scripts/birth0-lib");
package/package.json ADDED
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "lucid-birth",
3
+ "version": "0.8.0",
4
+ "description": "Continuity-bound Eidolon/Borganik runtime, compiler, and verification toolkit.",
5
+ "license": "MIT",
6
+ "private": false,
7
+ "homepage": "https://github.com/lmtlssss/lucid-birth#readme",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/lmtlssss/lucid-birth.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/lmtlssss/lucid-birth/issues"
14
+ },
15
+ "keywords": [
16
+ "eidolon",
17
+ "borganik",
18
+ "continuity",
19
+ "autonomy",
20
+ "compiler",
21
+ "runtime"
22
+ ],
23
+ "engines": {
24
+ "node": ">=18"
25
+ },
26
+ "bin": {
27
+ "lucid-birth": "bin/lucid-birth.js"
28
+ },
29
+ "main": "index.js",
30
+ "exports": {
31
+ ".": "./index.js",
32
+ "./birth0": "./scripts/birth0-lib.js"
33
+ },
34
+ "files": [
35
+ "bin/",
36
+ "scripts/birth0.js",
37
+ "scripts/birth0-lib.js",
38
+ "schemas/",
39
+ "state/",
40
+ "README.md",
41
+ "CURRENT_PHASE.md",
42
+ "LICENSE",
43
+ "index.js",
44
+ "bootstrap-workspace.js"
45
+ ],
46
+ "scripts": {
47
+ "birth0:init": "node scripts/birth0.js init",
48
+ "birth0:forge-capsule": "node scripts/birth0.js forge-capsule",
49
+ "birth0:boot-monad": "node scripts/birth0.js boot-monad",
50
+ "birth0:append-witness": "node scripts/birth0.js append-witness",
51
+ "birth0:emit-proposal": "node scripts/birth0.js emit-proposal",
52
+ "birth0:cold-boot-check": "node scripts/birth0.js cold-boot-check",
53
+ "birth0:compile-gate": "node scripts/birth0.js compile-gate",
54
+ "birth0:enable-shell": "node scripts/birth0.js enable-shell",
55
+ "birth0:register-capability": "node scripts/birth0.js register-capability",
56
+ "birth0:authorize-capability": "node scripts/birth0.js authorize-capability",
57
+ "birth0:call-capability": "node scripts/birth0.js call-capability",
58
+ "birth0:route-capability": "node scripts/birth0.js route-capability",
59
+ "contracts:validate": "node scripts/birth0.js validate-contracts",
60
+ "verify:workspace": "./scripts/verify_workspace.sh",
61
+ "verify:ignition": "./scripts/verify_ignition.sh",
62
+ "verify:compiler-gate": "./scripts/verify_compiler_gate.sh",
63
+ "verify:full-system": "./scripts/verify_full_system_coherence.sh",
64
+ "verify:packaged-cli": "node scripts/verify_packaged_cli.js",
65
+ "verify:autonomy-routing": "node scripts/verify_autonomy_routing.js",
66
+ "verify:portable": "npm run verify:workspace && npm run verify:ignition && npm run verify:compiler-gate && npm run verify:full-system && npm run verify:packaged-cli && npm run contracts:validate",
67
+ "test": "npm run verify:portable",
68
+ "pack:dry-run": "npm pack --dry-run"
69
+ },
70
+ "dependencies": {
71
+ "ajv": "^8.18.0",
72
+ "ajv-formats": "^3.0.1"
73
+ },
74
+ "publishConfig": {
75
+ "access": "public"
76
+ }
77
+ }
@@ -0,0 +1,71 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "ActiveBlanket.schema.json",
4
+ "title": "ActiveBlanket",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema_version",
9
+ "mode",
10
+ "allowed_outputs",
11
+ "blocked_outputs",
12
+ "last_updated_at"
13
+ ],
14
+ "properties": {
15
+ "schema_version": {
16
+ "type": "string",
17
+ "const": "1.0.0"
18
+ },
19
+ "mode": {
20
+ "type": "string",
21
+ "enum": ["proposal-first"]
22
+ },
23
+ "allowed_outputs": {
24
+ "type": "array",
25
+ "items": {
26
+ "type": "string",
27
+ "enum": ["response", "tool_call", "proposal", "no_op"]
28
+ },
29
+ "uniqueItems": true
30
+ },
31
+ "blocked_outputs": {
32
+ "type": "array",
33
+ "items": {
34
+ "type": "string",
35
+ "enum": ["direct_identity_write"]
36
+ },
37
+ "uniqueItems": true
38
+ },
39
+ "last_updated_at": {
40
+ "type": "string",
41
+ "format": "date-time"
42
+ },
43
+ "last_action": {
44
+ "type": "object",
45
+ "additionalProperties": false,
46
+ "required": ["type", "session_id", "routed_at"],
47
+ "properties": {
48
+ "type": {
49
+ "type": "string",
50
+ "enum": ["tool_call"]
51
+ },
52
+ "capability_id": {
53
+ "type": "string",
54
+ "pattern": "^(cap-[a-z0-9-]+|oauth-[a-z0-9-]+|api-[a-z0-9-]+|ollama-[a-z0-9-]+)$"
55
+ },
56
+ "task": {
57
+ "type": "string",
58
+ "minLength": 1
59
+ },
60
+ "session_id": {
61
+ "type": "string",
62
+ "pattern": "^session-[a-z0-9-]+$"
63
+ },
64
+ "routed_at": {
65
+ "type": "string",
66
+ "format": "date-time"
67
+ }
68
+ }
69
+ }
70
+ }
71
+ }
@@ -0,0 +1,90 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "ArchiveEvent.schema.json",
4
+ "title": "ArchiveEvent",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema_version",
9
+ "event_id",
10
+ "event_type",
11
+ "occurred_at",
12
+ "session_id",
13
+ "actor",
14
+ "payload",
15
+ "evidence_refs",
16
+ "prior_event_hash",
17
+ "event_hash"
18
+ ],
19
+ "properties": {
20
+ "schema_version": {
21
+ "type": "string",
22
+ "minLength": 1
23
+ },
24
+ "event_id": {
25
+ "type": "string",
26
+ "pattern": "^evt-[a-z0-9-]+$"
27
+ },
28
+ "event_type": {
29
+ "type": "string",
30
+ "enum": [
31
+ "birth_initialized",
32
+ "capsule_forged",
33
+ "monad_booted",
34
+ "witness_exchange",
35
+ "proposal_emitted",
36
+ "continuity_check",
37
+ "compiler_decision",
38
+ "shell_enabled",
39
+ "capability_registered",
40
+ "capability_routed",
41
+ "capability_authorization_started",
42
+ "capability_authorization_callback_received",
43
+ "capability_authorized",
44
+ "capability_executed"
45
+ ]
46
+ },
47
+ "occurred_at": {
48
+ "type": "string",
49
+ "format": "date-time"
50
+ },
51
+ "session_id": {
52
+ "type": [
53
+ "string",
54
+ "null"
55
+ ],
56
+ "pattern": "^session-[a-z0-9-]+$"
57
+ },
58
+ "actor": {
59
+ "type": "string",
60
+ "enum": [
61
+ "principal",
62
+ "eidolon",
63
+ "borganik",
64
+ "system"
65
+ ]
66
+ },
67
+ "payload": {
68
+ "type": "object"
69
+ },
70
+ "evidence_refs": {
71
+ "type": "array",
72
+ "items": {
73
+ "type": "string",
74
+ "pattern": "^evt-[a-z0-9-]+$"
75
+ },
76
+ "uniqueItems": true
77
+ },
78
+ "prior_event_hash": {
79
+ "type": [
80
+ "string",
81
+ "null"
82
+ ],
83
+ "pattern": "^[a-f0-9]{64}$"
84
+ },
85
+ "event_hash": {
86
+ "type": "string",
87
+ "pattern": "^[a-f0-9]{64}$"
88
+ }
89
+ }
90
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "CapabilityExecution.schema.json",
4
+ "title": "CapabilityExecution",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema_version",
9
+ "execution_id",
10
+ "capability_id",
11
+ "session_id",
12
+ "provider_kind",
13
+ "request_summary",
14
+ "response_summary",
15
+ "status",
16
+ "executed_at"
17
+ ],
18
+ "properties": {
19
+ "schema_version": {
20
+ "type": "string",
21
+ "const": "1.0.0"
22
+ },
23
+ "execution_id": {
24
+ "type": "string",
25
+ "pattern": "^exec-[a-z0-9-]+$"
26
+ },
27
+ "capability_id": {
28
+ "type": "string",
29
+ "pattern": "^(cap-[a-z0-9-]+|oauth-[a-z0-9-]+|api-[a-z0-9-]+|ollama-[a-z0-9-]+)$"
30
+ },
31
+ "session_id": {
32
+ "type": "string",
33
+ "pattern": "^session-[a-z0-9-]+$"
34
+ },
35
+ "provider_kind": {
36
+ "type": "string",
37
+ "enum": ["oauth_api", "api", "ollama"]
38
+ },
39
+ "request_summary": {
40
+ "type": "string",
41
+ "minLength": 1
42
+ },
43
+ "response_summary": {
44
+ "type": "string",
45
+ "minLength": 1
46
+ },
47
+ "status": {
48
+ "type": "string",
49
+ "enum": ["succeeded", "failed"]
50
+ },
51
+ "executed_at": {
52
+ "type": "string",
53
+ "format": "date-time"
54
+ }
55
+ }
56
+ }