graphlin 0.1.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 (60) hide show
  1. package/.claude-plugin/plugin.json +12 -0
  2. package/.codex-plugin/plugin.json +29 -0
  3. package/.mcp.json +9 -0
  4. package/LICENSE +21 -0
  5. package/README.md +71 -0
  6. package/adapters/README.md +32 -0
  7. package/adapters/claude/hooks.json +10 -0
  8. package/adapters/claude/profile.json +18 -0
  9. package/adapters/codex/hooks.json +9 -0
  10. package/adapters/codex/profile.json +22 -0
  11. package/adapters/kiro/profile.json +8 -0
  12. package/mcp.json +11 -0
  13. package/package.json +114 -0
  14. package/plugin.json +20 -0
  15. package/runtime/collector/index.mjs +23 -0
  16. package/runtime/core/candidates.mjs +300 -0
  17. package/runtime/core/common.mjs +69 -0
  18. package/runtime/core/evidence.mjs +150 -0
  19. package/runtime/core/graph.mjs +398 -0
  20. package/runtime/core/index.mjs +4 -0
  21. package/runtime/core/lexical.mjs +255 -0
  22. package/runtime/core/privacy.mjs +206 -0
  23. package/runtime/core/tool-discovery.mjs +122 -0
  24. package/runtime/daemon/auth.mjs +50 -0
  25. package/runtime/daemon/connection-info.mjs +249 -0
  26. package/runtime/daemon/demo.mjs +195 -0
  27. package/runtime/daemon/diagnostics.mjs +404 -0
  28. package/runtime/daemon/export.mjs +7 -0
  29. package/runtime/daemon/ipc.mjs +28 -0
  30. package/runtime/daemon/lock.mjs +137 -0
  31. package/runtime/daemon/manager.mjs +320 -0
  32. package/runtime/daemon/paths.mjs +108 -0
  33. package/runtime/daemon/persistence.mjs +64 -0
  34. package/runtime/daemon/server.mjs +292 -0
  35. package/runtime/daemon/settings.mjs +103 -0
  36. package/runtime/jev/fixture.mjs +99 -0
  37. package/runtime/jev/index.mjs +784 -0
  38. package/runtime/jev/questions.mjs +268 -0
  39. package/runtime/jev/wire.mjs +152 -0
  40. package/runtime/pipeline.mjs +1071 -0
  41. package/runtime/web/app.js +2596 -0
  42. package/runtime/web/index.html +265 -0
  43. package/runtime/web/layout.js +336 -0
  44. package/runtime/web/sidebar.js +525 -0
  45. package/runtime/web/sketch.js +347 -0
  46. package/runtime/web/style.css +593 -0
  47. package/schemas/bundle.schema.json +243 -0
  48. package/schemas/event.schema.json +108 -0
  49. package/schemas/graph.schema.json +449 -0
  50. package/schemas/patch.schema.json +111 -0
  51. package/scripts/arguments.mjs +37 -0
  52. package/scripts/build-packages.mjs +160 -0
  53. package/scripts/collect.sh +23 -0
  54. package/scripts/collector.mjs +11 -0
  55. package/scripts/control.mjs +80 -0
  56. package/scripts/daemon.mjs +28 -0
  57. package/scripts/graphlin.mjs +112 -0
  58. package/scripts/onboarding.mjs +413 -0
  59. package/scripts/validate-packages.mjs +118 -0
  60. package/skills/graphlin/SKILL.md +103 -0
@@ -0,0 +1,243 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "Graphlin bundle",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "properties": {
7
+ "id": {
8
+ "type": "string",
9
+ "pattern": "^(?:[a-z][a-z0-9_]{0,23}-)?[a-f0-9]{24,64}$"
10
+ },
11
+ "policyVersion": {
12
+ "type": "string",
13
+ "pattern": "^(?:[a-z][a-z0-9_]{0,23}-)?[a-f0-9]{24,64}$"
14
+ },
15
+ "candidates": {
16
+ "type": "array",
17
+ "items": {
18
+ "$ref": "#/$defs/candidate"
19
+ },
20
+ "minItems": 0,
21
+ "maxItems": 12
22
+ },
23
+ "readSet": {
24
+ "type": "array",
25
+ "items": {
26
+ "oneOf": [
27
+ {
28
+ "type": "object",
29
+ "additionalProperties": false,
30
+ "properties": {
31
+ "artifactId": {
32
+ "type": "string",
33
+ "pattern": "^(?:[a-z][a-z0-9_]{0,23}-)?[a-f0-9]{24,64}$"
34
+ },
35
+ "hash": {
36
+ "type": "string",
37
+ "pattern": "^[a-f0-9]{64}$"
38
+ },
39
+ "generation": {
40
+ "type": "integer",
41
+ "minimum": 1,
42
+ "maximum": 9007199254740991
43
+ }
44
+ },
45
+ "required": [
46
+ "artifactId",
47
+ "hash",
48
+ "generation"
49
+ ]
50
+ },
51
+ {
52
+ "type": "object",
53
+ "additionalProperties": false,
54
+ "properties": {
55
+ "type": {
56
+ "const": "message"
57
+ },
58
+ "messageId": {
59
+ "type": "string",
60
+ "pattern": "^(?:[a-z][a-z0-9_]{0,23}-)?[a-f0-9]{24,64}$"
61
+ },
62
+ "hash": {
63
+ "type": "string",
64
+ "pattern": "^[a-f0-9]{64}$"
65
+ },
66
+ "contentVersion": {
67
+ "type": "integer",
68
+ "minimum": 1,
69
+ "maximum": 9007199254740991
70
+ }
71
+ },
72
+ "required": [
73
+ "type",
74
+ "messageId",
75
+ "hash",
76
+ "contentVersion"
77
+ ]
78
+ }
79
+ ]
80
+ },
81
+ "minItems": 0,
82
+ "maxItems": 12
83
+ }
84
+ },
85
+ "required": [
86
+ "id",
87
+ "policyVersion",
88
+ "candidates",
89
+ "readSet"
90
+ ],
91
+ "$defs": {
92
+ "candidate": {
93
+ "type": "object",
94
+ "additionalProperties": false,
95
+ "properties": {
96
+ "id": {
97
+ "type": "string",
98
+ "pattern": "^(?:[a-z][a-z0-9_]{0,23}-)?[a-f0-9]{24,64}$"
99
+ },
100
+ "artifactId": {
101
+ "type": "string",
102
+ "pattern": "^(?:[a-z][a-z0-9_]{0,23}-)?[a-f0-9]{24,64}$"
103
+ },
104
+ "hash": {
105
+ "type": "string",
106
+ "pattern": "^[a-f0-9]{64}$"
107
+ },
108
+ "generation": {
109
+ "type": "integer",
110
+ "minimum": 1,
111
+ "maximum": 9007199254740991
112
+ },
113
+ "label": {
114
+ "type": "string",
115
+ "minLength": 1,
116
+ "maxLength": 80
117
+ },
118
+ "text": {
119
+ "type": "string",
120
+ "minLength": 1,
121
+ "maxLength": 1800
122
+ },
123
+ "startLine": {
124
+ "type": "integer",
125
+ "minimum": 1,
126
+ "maximum": 10000000
127
+ },
128
+ "endLine": {
129
+ "type": "integer",
130
+ "minimum": 1,
131
+ "maximum": 10000000
132
+ },
133
+ "sourceClass": {
134
+ "enum": [
135
+ "source",
136
+ "public_intent"
137
+ ]
138
+ },
139
+ "complete": {
140
+ "type": "boolean"
141
+ },
142
+ "entityKey": {
143
+ "type": "string",
144
+ "pattern": "^(?:[a-z][a-z0-9_]{0,23}-)?[a-f0-9]{24,64}$"
145
+ },
146
+ "labelOrigin": {
147
+ "oneOf": [
148
+ {
149
+ "type": "object",
150
+ "additionalProperties": false,
151
+ "properties": {
152
+ "type": {
153
+ "const": "span"
154
+ },
155
+ "startLine": {
156
+ "type": "integer",
157
+ "minimum": 1,
158
+ "maximum": 10000000
159
+ },
160
+ "endLine": {
161
+ "type": "integer",
162
+ "minimum": 1,
163
+ "maximum": 10000000
164
+ },
165
+ "startColumn": {
166
+ "type": "integer",
167
+ "minimum": 1,
168
+ "maximum": 1800
169
+ },
170
+ "endColumn": {
171
+ "type": "integer",
172
+ "minimum": 1,
173
+ "maximum": 1801
174
+ }
175
+ },
176
+ "required": [
177
+ "type",
178
+ "startLine",
179
+ "endLine",
180
+ "startColumn",
181
+ "endColumn"
182
+ ]
183
+ },
184
+ {
185
+ "type": "object",
186
+ "additionalProperties": false,
187
+ "properties": {
188
+ "type": {
189
+ "const": "generic"
190
+ },
191
+ "label": {
192
+ "enum": [
193
+ "Component",
194
+ "Module",
195
+ "Client",
196
+ "Service",
197
+ "Datastore",
198
+ "Queue",
199
+ "External",
200
+ "Function",
201
+ "Class",
202
+ "Interface",
203
+ "Event",
204
+ "Configuration",
205
+ "Package"
206
+ ]
207
+ }
208
+ },
209
+ "required": [
210
+ "type",
211
+ "label"
212
+ ]
213
+ }
214
+ ]
215
+ },
216
+ "sourceRef": {
217
+ "$ref": "graph.schema.json#/$defs/sourceRef"
218
+ },
219
+ "digest": {
220
+ "type": "string",
221
+ "pattern": "^[a-f0-9]{64}$"
222
+ }
223
+ },
224
+ "required": [
225
+ "id",
226
+ "artifactId",
227
+ "hash",
228
+ "generation",
229
+ "label",
230
+ "text",
231
+ "startLine",
232
+ "endLine",
233
+ "sourceClass",
234
+ "complete",
235
+ "entityKey",
236
+ "labelOrigin",
237
+ "sourceRef",
238
+ "digest"
239
+ ]
240
+ }
241
+ },
242
+ "$comment": "JSON shape alone is insufficient authorization. Core materializes and brands the exact immutable bundle after validating finite independent intake verdicts and policy-bound candidate digests. Compilation requires that exact bundle identity. Source spans, read-set equality and source-version consistency are checked at runtime."
243
+ }
@@ -0,0 +1,108 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "Graphlin event",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "properties": {
7
+ "schemaVersion": {
8
+ "const": 1
9
+ },
10
+ "id": {
11
+ "type": "string",
12
+ "pattern": "^(?:[a-z][a-z0-9_]{0,23}-)?[a-f0-9]{24,64}$"
13
+ },
14
+ "projectId": {
15
+ "type": "string",
16
+ "pattern": "^(?:[a-z][a-z0-9_]{0,23}-)?[a-f0-9]{24,64}$"
17
+ },
18
+ "sessionId": {
19
+ "type": "string",
20
+ "pattern": "^(?:[a-z][a-z0-9_]{0,23}-)?[a-f0-9]{24,64}$"
21
+ },
22
+ "agentId": {
23
+ "type": "string",
24
+ "pattern": "^(?:[a-z][a-z0-9_]{0,23}-)?[a-f0-9]{24,64}$"
25
+ },
26
+ "toolCallId": {
27
+ "anyOf": [
28
+ {
29
+ "type": "string",
30
+ "pattern": "^(?:[a-z][a-z0-9_]{0,23}-)?[a-f0-9]{24,64}$"
31
+ },
32
+ {
33
+ "type": "null"
34
+ }
35
+ ]
36
+ },
37
+ "kind": {
38
+ "enum": [
39
+ "session.started",
40
+ "turn.prompted",
41
+ "intent.observed",
42
+ "tool.requested",
43
+ "tool.succeeded",
44
+ "tool.failed",
45
+ "tool.interrupted",
46
+ "tool.denied",
47
+ "tool.unresolved",
48
+ "batch.completed",
49
+ "artifact.changed",
50
+ "verification.observed",
51
+ "agent.started",
52
+ "agent.stopped",
53
+ "turn.stopped",
54
+ "session.ended",
55
+ "capture.gap"
56
+ ]
57
+ },
58
+ "toolCategory": {
59
+ "enum": [
60
+ "read",
61
+ "write",
62
+ "edit",
63
+ "shell",
64
+ "search",
65
+ "test",
66
+ "other"
67
+ ]
68
+ },
69
+ "outcome": {
70
+ "enum": [
71
+ "pending",
72
+ "succeeded",
73
+ "failed",
74
+ "interrupted",
75
+ "denied",
76
+ "unresolved",
77
+ "observed"
78
+ ]
79
+ },
80
+ "at": {
81
+ "type": "string",
82
+ "format": "date-time",
83
+ "maxLength": 32
84
+ },
85
+ "sequence": {
86
+ "type": "integer",
87
+ "minimum": 0,
88
+ "maximum": 9007199254740991
89
+ },
90
+ "incomplete": {
91
+ "type": "boolean"
92
+ }
93
+ },
94
+ "required": [
95
+ "schemaVersion",
96
+ "id",
97
+ "projectId",
98
+ "sessionId",
99
+ "agentId",
100
+ "toolCallId",
101
+ "kind",
102
+ "toolCategory",
103
+ "outcome",
104
+ "at",
105
+ "sequence",
106
+ "incomplete"
107
+ ]
108
+ }