@atheory-ai/ce-plugin-sdk 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 (46) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +86 -0
  3. package/dist/abi.d.ts +33 -0
  4. package/dist/abi.d.ts.map +1 -0
  5. package/dist/abi.js +162 -0
  6. package/dist/abi.js.map +7 -0
  7. package/dist/build/ce-abi.d.ts +7 -0
  8. package/dist/build/ce-abi.d.ts.map +1 -0
  9. package/dist/build/ce-abi.js +65 -0
  10. package/dist/build/ce-abi.js.map +7 -0
  11. package/dist/define.d.ts +18 -0
  12. package/dist/define.d.ts.map +1 -0
  13. package/dist/effects.d.ts +21 -0
  14. package/dist/effects.d.ts.map +1 -0
  15. package/dist/eslint/index.d.ts +29 -0
  16. package/dist/eslint/index.d.ts.map +1 -0
  17. package/dist/eslint/index.js +309 -0
  18. package/dist/eslint/index.js.map +7 -0
  19. package/dist/eslint/rules/concept-term-format.d.ts +4 -0
  20. package/dist/eslint/rules/concept-term-format.d.ts.map +1 -0
  21. package/dist/eslint/rules/extract-return-type.d.ts +4 -0
  22. package/dist/eslint/rules/extract-return-type.d.ts.map +1 -0
  23. package/dist/eslint/rules/id-helpers-required.d.ts +4 -0
  24. package/dist/eslint/rules/id-helpers-required.d.ts.map +1 -0
  25. package/dist/eslint/rules/no-node-apis.d.ts +4 -0
  26. package/dist/eslint/rules/no-node-apis.d.ts.map +1 -0
  27. package/dist/eslint/rules/pure-activate.d.ts +4 -0
  28. package/dist/eslint/rules/pure-activate.d.ts.map +1 -0
  29. package/dist/eslint/rules/tool-description-length.d.ts +4 -0
  30. package/dist/eslint/rules/tool-description-length.d.ts.map +1 -0
  31. package/dist/host.d.ts +13 -0
  32. package/dist/host.d.ts.map +1 -0
  33. package/dist/iir.d.ts +83 -0
  34. package/dist/iir.d.ts.map +1 -0
  35. package/dist/index.cjs +267 -0
  36. package/dist/index.cjs.map +7 -0
  37. package/dist/index.d.ts +9 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +244 -0
  40. package/dist/index.js.map +7 -0
  41. package/dist/tree.d.ts +27 -0
  42. package/dist/tree.d.ts.map +1 -0
  43. package/dist/types.d.ts +175 -0
  44. package/dist/types.d.ts.map +1 -0
  45. package/package.json +84 -0
  46. package/tsconfig.plugin.json +7 -0
@@ -0,0 +1,29 @@
1
+ declare const plugin: {
2
+ meta: {
3
+ name: string;
4
+ version: string;
5
+ };
6
+ rules: {
7
+ "no-node-apis": import("eslint").Rule.RuleModule;
8
+ "tool-description-length": import("eslint").Rule.RuleModule;
9
+ "concept-term-format": import("eslint").Rule.RuleModule;
10
+ "extract-return-type": import("eslint").Rule.RuleModule;
11
+ "pure-activate": import("eslint").Rule.RuleModule;
12
+ "id-helpers-required": import("eslint").Rule.RuleModule;
13
+ };
14
+ configs: {
15
+ recommended: {
16
+ plugins: Record<string, unknown>;
17
+ rules: {
18
+ "ce-plugin-sdk/no-node-apis": string;
19
+ "ce-plugin-sdk/tool-description-length": string;
20
+ "ce-plugin-sdk/concept-term-format": string;
21
+ "ce-plugin-sdk/extract-return-type": string;
22
+ "ce-plugin-sdk/pure-activate": string;
23
+ "ce-plugin-sdk/id-helpers-required": string;
24
+ };
25
+ };
26
+ };
27
+ };
28
+ export default plugin;
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eslint/index.ts"],"names":[],"mappings":"AAmBA,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;qBAXK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;CA2BvC,CAAA;AAID,eAAe,MAAM,CAAA"}
@@ -0,0 +1,309 @@
1
+ // src/eslint/rules/no-node-apis.ts
2
+ var BANNED_IDENTIFIERS = /* @__PURE__ */ new Set([
3
+ "require",
4
+ "__dirname",
5
+ "__filename",
6
+ "Buffer",
7
+ "setTimeout",
8
+ "setInterval",
9
+ "clearTimeout",
10
+ "clearInterval",
11
+ "fetch",
12
+ "XMLHttpRequest",
13
+ "WebSocket"
14
+ ]);
15
+ var BANNED_MEMBER_EXPRESSIONS = [
16
+ ["process", "env"],
17
+ ["process", "exit"],
18
+ ["process", "argv"],
19
+ ["fs", "readFile"],
20
+ ["fs", "writeFile"],
21
+ ["fs", "readFileSync"],
22
+ ["path", "join"],
23
+ ["path", "resolve"]
24
+ ];
25
+ var rule = {
26
+ meta: {
27
+ type: "problem",
28
+ docs: {
29
+ description: "Disallow Node.js APIs in CE plugins (not available in WASM sandbox)",
30
+ recommended: true
31
+ },
32
+ messages: {
33
+ bannedIdentifier: "'{{name}}' is not available in the CE WASM sandbox.",
34
+ bannedMember: "'{{obj}}.{{prop}}' is not available in the CE WASM sandbox."
35
+ }
36
+ },
37
+ create(context) {
38
+ return {
39
+ Identifier(node) {
40
+ if (BANNED_IDENTIFIERS.has(node.name)) {
41
+ context.report({
42
+ node,
43
+ messageId: "bannedIdentifier",
44
+ data: { name: node.name }
45
+ });
46
+ }
47
+ },
48
+ MemberExpression(node) {
49
+ const obj = node.object;
50
+ const prop = node.property;
51
+ if (obj.type === "Identifier" && prop.type === "Identifier") {
52
+ for (const [bannedObj, bannedProp] of BANNED_MEMBER_EXPRESSIONS) {
53
+ if (obj.name === bannedObj && prop.name === bannedProp) {
54
+ context.report({
55
+ node,
56
+ messageId: "bannedMember",
57
+ data: { obj: bannedObj, prop: bannedProp }
58
+ });
59
+ }
60
+ }
61
+ }
62
+ }
63
+ };
64
+ }
65
+ };
66
+ var no_node_apis_default = rule;
67
+
68
+ // src/eslint/rules/tool-description-length.ts
69
+ var rule2 = {
70
+ meta: {
71
+ type: "problem",
72
+ docs: {
73
+ description: "Tool descriptions must be 100 characters or fewer",
74
+ recommended: true
75
+ },
76
+ messages: {
77
+ tooLong: "Tool description is {{length}} characters (max 100). The Strategizer receives this in its prompt \u2014 keep it concise."
78
+ }
79
+ },
80
+ create(context) {
81
+ return {
82
+ Property(node) {
83
+ if (node.key.type === "Identifier" && node.key.name === "description" && node.value.type === "Literal" && typeof node.value.value === "string" && node.value.value.length > 100) {
84
+ context.report({
85
+ node: node.value,
86
+ messageId: "tooLong",
87
+ data: { length: String(node.value.value.length) }
88
+ });
89
+ }
90
+ }
91
+ };
92
+ }
93
+ };
94
+ var tool_description_length_default = rule2;
95
+
96
+ // src/eslint/rules/concept-term-format.ts
97
+ var VALID_TERM = /^[a-z][a-z0-9-]*$/;
98
+ var rule3 = {
99
+ meta: {
100
+ type: "problem",
101
+ docs: {
102
+ description: "Concept terms must be lowercase-hyphenated",
103
+ recommended: true
104
+ },
105
+ messages: {
106
+ badFormat: "Concept term '{{term}}' must be lowercase-hyphenated (e.g., 'my-concept')."
107
+ }
108
+ },
109
+ create(context) {
110
+ return {
111
+ Property(node) {
112
+ if (node.key.type === "Identifier" && node.key.name === "term" && node.value.type === "Literal" && typeof node.value.value === "string" && !VALID_TERM.test(node.value.value)) {
113
+ context.report({
114
+ node: node.value,
115
+ messageId: "badFormat",
116
+ data: { term: node.value.value }
117
+ });
118
+ }
119
+ }
120
+ };
121
+ }
122
+ };
123
+ var concept_term_format_default = rule3;
124
+
125
+ // src/eslint/rules/extract-return-type.ts
126
+ function isExtractFunction(node) {
127
+ if (typeof node !== "object" || node === null || !("type" in node)) {
128
+ return false;
129
+ }
130
+ const candidate = node;
131
+ if (candidate.type === "FunctionDeclaration") {
132
+ return candidate.id?.name === "extract";
133
+ }
134
+ if (candidate.type !== "ArrowFunctionExpression") {
135
+ return false;
136
+ }
137
+ return candidate.parent?.type === "Property" && candidate.parent.key?.type === "Identifier" && candidate.parent.key.name === "extract";
138
+ }
139
+ function getUnexpectedPropertyName(prop) {
140
+ if (prop.key.type !== "Identifier") {
141
+ return null;
142
+ }
143
+ const name = prop.key.name;
144
+ if (!name || name === "nodes" || name === "edges") {
145
+ return null;
146
+ }
147
+ return name;
148
+ }
149
+ var rule4 = {
150
+ meta: {
151
+ type: "problem",
152
+ docs: {
153
+ description: "extract() must return { nodes, edges }",
154
+ recommended: true
155
+ },
156
+ messages: {
157
+ wrongShape: "extract() must return { nodes: Node[], edges: Edge[] }. Found property '{{prop}}' \u2014 did you mean 'nodes' or 'edges'?"
158
+ }
159
+ },
160
+ create(context) {
161
+ return {
162
+ ReturnStatement(node) {
163
+ const fn = context.getAncestors().find(isExtractFunction);
164
+ if (!fn)
165
+ return;
166
+ const arg = node.argument;
167
+ if (!arg || arg.type !== "ObjectExpression")
168
+ return;
169
+ for (const prop of arg.properties) {
170
+ if (prop.type !== "Property")
171
+ continue;
172
+ const propName = getUnexpectedPropertyName(prop);
173
+ if (propName) {
174
+ context.report({
175
+ node: prop.key,
176
+ messageId: "wrongShape",
177
+ data: { prop: propName }
178
+ });
179
+ }
180
+ }
181
+ }
182
+ };
183
+ }
184
+ };
185
+ var extract_return_type_default = rule4;
186
+
187
+ // src/eslint/rules/pure-activate.ts
188
+ function isActivateFn(node) {
189
+ if (typeof node !== "object" || node === null || !("type" in node)) {
190
+ return false;
191
+ }
192
+ const candidate = node;
193
+ return candidate.type === "FunctionDeclaration" && candidate.id?.name === "activate" || candidate.type === "ArrowFunctionExpression" && candidate.parent?.type === "Property" && candidate.parent.key?.type === "Identifier" && candidate.parent.key.name === "activate";
194
+ }
195
+ var rule5 = {
196
+ meta: {
197
+ type: "suggestion",
198
+ docs: {
199
+ description: "activate() should be a pure function (heuristic)",
200
+ recommended: true
201
+ },
202
+ messages: {
203
+ hasSideEffect: "activate() should be a pure function. Found call to '{{name}}()' \u2014 side effects break tool selection.",
204
+ hasAssignment: "activate() should be a pure function. Assignment statements are not allowed."
205
+ }
206
+ },
207
+ create(context) {
208
+ let insideActivate = false;
209
+ return {
210
+ "FunctionDeclaration, ArrowFunctionExpression"(node) {
211
+ if (isActivateFn(node))
212
+ insideActivate = true;
213
+ },
214
+ "FunctionDeclaration:exit, ArrowFunctionExpression:exit"(node) {
215
+ if (isActivateFn(node))
216
+ insideActivate = false;
217
+ },
218
+ CallExpression(node) {
219
+ if (!insideActivate)
220
+ return;
221
+ const { callee } = node;
222
+ const calleeName = callee.name;
223
+ if (callee.type === "Identifier" && calleeName && calleeName !== "Boolean") {
224
+ context.report({
225
+ node,
226
+ messageId: "hasSideEffect",
227
+ data: { name: calleeName }
228
+ });
229
+ }
230
+ },
231
+ AssignmentExpression(node) {
232
+ if (insideActivate) {
233
+ context.report({ node, messageId: "hasAssignment" });
234
+ }
235
+ }
236
+ };
237
+ }
238
+ };
239
+ var pure_activate_default = rule5;
240
+
241
+ // src/eslint/rules/id-helpers-required.ts
242
+ var MANUAL_ID_PATTERNS = [
243
+ /sha256/i,
244
+ /crypto\.createHash/,
245
+ /\.toString\(16\)/,
246
+ /\+ ":" \+/,
247
+ /\+ "\/" \+/
248
+ ];
249
+ var rule6 = {
250
+ meta: {
251
+ type: "suggestion",
252
+ docs: {
253
+ description: "Use nodeID() and edgeID() helpers \u2014 never construct IDs manually",
254
+ recommended: true
255
+ },
256
+ messages: {
257
+ manualID: "Looks like a manually constructed node/edge ID. Use nodeID() or edgeID() helpers instead \u2014 the engine uses deterministic hashing and inconsistent IDs break the graph."
258
+ }
259
+ },
260
+ create(context) {
261
+ return {
262
+ Property(node) {
263
+ if (node.key.type === "Identifier" && node.key.name === "id" && node.value.type !== "CallExpression") {
264
+ const src = context.getSourceCode().getText(node.value);
265
+ if (MANUAL_ID_PATTERNS.some((p) => p.test(src))) {
266
+ context.report({ node: node.value, messageId: "manualID" });
267
+ }
268
+ }
269
+ }
270
+ };
271
+ }
272
+ };
273
+ var id_helpers_required_default = rule6;
274
+
275
+ // src/eslint/index.ts
276
+ var recommended = {
277
+ plugins: {},
278
+ rules: {
279
+ "ce-plugin-sdk/no-node-apis": "error",
280
+ "ce-plugin-sdk/tool-description-length": "error",
281
+ "ce-plugin-sdk/concept-term-format": "error",
282
+ "ce-plugin-sdk/extract-return-type": "warn",
283
+ "ce-plugin-sdk/pure-activate": "warn",
284
+ "ce-plugin-sdk/id-helpers-required": "warn"
285
+ }
286
+ };
287
+ var plugin = {
288
+ meta: {
289
+ name: "@atheory-ai/ce-plugin-sdk",
290
+ version: "0.1.0"
291
+ },
292
+ rules: {
293
+ "no-node-apis": no_node_apis_default,
294
+ "tool-description-length": tool_description_length_default,
295
+ "concept-term-format": concept_term_format_default,
296
+ "extract-return-type": extract_return_type_default,
297
+ "pure-activate": pure_activate_default,
298
+ "id-helpers-required": id_helpers_required_default
299
+ },
300
+ configs: {
301
+ recommended
302
+ }
303
+ };
304
+ recommended.plugins["ce-plugin-sdk"] = plugin;
305
+ var eslint_default = plugin;
306
+ export {
307
+ eslint_default as default
308
+ };
309
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/eslint/rules/no-node-apis.ts", "../../src/eslint/rules/tool-description-length.ts", "../../src/eslint/rules/concept-term-format.ts", "../../src/eslint/rules/extract-return-type.ts", "../../src/eslint/rules/pure-activate.ts", "../../src/eslint/rules/id-helpers-required.ts", "../../src/eslint/index.ts"],
4
+ "sourcesContent": ["import type { Rule } from \"eslint\"\n\nconst BANNED_IDENTIFIERS = new Set([\n \"require\",\n \"__dirname\",\n \"__filename\",\n \"Buffer\",\n \"setTimeout\",\n \"setInterval\",\n \"clearTimeout\",\n \"clearInterval\",\n \"fetch\",\n \"XMLHttpRequest\",\n \"WebSocket\",\n])\n\nconst BANNED_MEMBER_EXPRESSIONS: Array<[string, string]> = [\n [\"process\", \"env\"],\n [\"process\", \"exit\"],\n [\"process\", \"argv\"],\n [\"fs\", \"readFile\"],\n [\"fs\", \"writeFile\"],\n [\"fs\", \"readFileSync\"],\n [\"path\", \"join\"],\n [\"path\", \"resolve\"],\n]\n\nconst rule: Rule.RuleModule = {\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow Node.js APIs in CE plugins (not available in WASM sandbox)\",\n recommended: true,\n },\n messages: {\n bannedIdentifier: \"'{{name}}' is not available in the CE WASM sandbox.\",\n bannedMember: \"'{{obj}}.{{prop}}' is not available in the CE WASM sandbox.\",\n },\n },\n create(context) {\n return {\n Identifier(node) {\n if (BANNED_IDENTIFIERS.has(node.name)) {\n context.report({\n node,\n messageId: \"bannedIdentifier\",\n data: { name: node.name },\n })\n }\n },\n MemberExpression(node) {\n const obj = node.object\n const prop = node.property\n if (\n obj.type === \"Identifier\" &&\n prop.type === \"Identifier\"\n ) {\n for (const [bannedObj, bannedProp] of BANNED_MEMBER_EXPRESSIONS) {\n if (obj.name === bannedObj && prop.name === bannedProp) {\n context.report({\n node,\n messageId: \"bannedMember\",\n data: { obj: bannedObj, prop: bannedProp },\n })\n }\n }\n }\n },\n }\n },\n}\n\nexport default rule\n", "import type { Rule } from \"eslint\"\n\nconst rule: Rule.RuleModule = {\n meta: {\n type: \"problem\",\n docs: {\n description: \"Tool descriptions must be 100 characters or fewer\",\n recommended: true,\n },\n messages: {\n tooLong:\n \"Tool description is {{length}} characters (max 100). The Strategizer receives this in its prompt \u2014 keep it concise.\",\n },\n },\n create(context) {\n return {\n Property(node) {\n if (\n node.key.type === \"Identifier\" &&\n node.key.name === \"description\" &&\n node.value.type === \"Literal\" &&\n typeof node.value.value === \"string\" &&\n node.value.value.length > 100\n ) {\n context.report({\n node: node.value,\n messageId: \"tooLong\",\n data: { length: String(node.value.value.length) },\n })\n }\n },\n }\n },\n}\n\nexport default rule\n", "import type { Rule } from \"eslint\"\n\nconst VALID_TERM = /^[a-z][a-z0-9-]*$/\n\nconst rule: Rule.RuleModule = {\n meta: {\n type: \"problem\",\n docs: {\n description: \"Concept terms must be lowercase-hyphenated\",\n recommended: true,\n },\n messages: {\n badFormat:\n \"Concept term '{{term}}' must be lowercase-hyphenated (e.g., 'my-concept').\",\n },\n },\n create(context) {\n return {\n Property(node) {\n if (\n node.key.type === \"Identifier\" &&\n node.key.name === \"term\" &&\n node.value.type === \"Literal\" &&\n typeof node.value.value === \"string\" &&\n !VALID_TERM.test(node.value.value)\n ) {\n context.report({\n node: node.value,\n messageId: \"badFormat\",\n data: { term: node.value.value },\n })\n }\n },\n }\n },\n}\n\nexport default rule\n", "import type { Rule } from \"eslint\"\n\ntype IdentifierNode = { type: \"Identifier\"; name: string }\ntype ParentNode = { type?: string; key?: { type?: string; name?: string } }\ntype FunctionLikeNode = {\n type: string\n id?: { name?: string } | null\n parent?: ParentNode\n}\n\ntype PropertyNode = {\n type: string\n key: { type?: string; name?: string }\n}\n\nfunction isExtractFunction(node: unknown): node is FunctionLikeNode {\n if (typeof node !== \"object\" || node === null || !(\"type\" in node)) {\n return false\n }\n\n const candidate = node as FunctionLikeNode\n if (candidate.type === \"FunctionDeclaration\") {\n return candidate.id?.name === \"extract\"\n }\n\n if (candidate.type !== \"ArrowFunctionExpression\") {\n return false\n }\n\n return candidate.parent?.type === \"Property\" && candidate.parent.key?.type === \"Identifier\" && candidate.parent.key.name === \"extract\"\n}\n\nfunction getUnexpectedPropertyName(prop: PropertyNode): string | null {\n if (prop.key.type !== \"Identifier\") {\n return null\n }\n\n const name = prop.key.name\n if (!name || name === \"nodes\" || name === \"edges\") {\n return null\n }\n\n return name\n}\n\nconst rule: Rule.RuleModule = {\n meta: {\n type: \"problem\",\n docs: {\n description: \"extract() must return { nodes, edges }\",\n recommended: true,\n },\n messages: {\n wrongShape:\n \"extract() must return { nodes: Node[], edges: Edge[] }. Found property '{{prop}}' \u2014 did you mean 'nodes' or 'edges'?\",\n },\n },\n create(context) {\n return {\n ReturnStatement(node) {\n const fn = context.getAncestors().find(isExtractFunction)\n if (!fn) return\n\n const arg = node.argument\n if (!arg || arg.type !== \"ObjectExpression\") return\n\n for (const prop of arg.properties) {\n if (prop.type !== \"Property\") continue\n const propName = getUnexpectedPropertyName(prop as PropertyNode)\n if (propName) {\n context.report({\n node: (prop.key as IdentifierNode),\n messageId: \"wrongShape\",\n data: { prop: propName },\n })\n }\n }\n },\n }\n },\n}\n\nexport default rule\n", "import type { Rule } from \"eslint\"\n\ntype ParentNode = { type?: string; key?: { type?: string; name?: string } }\ntype FunctionLikeNode = {\n type: string\n id?: { name?: string } | null\n parent?: ParentNode\n}\n\ntype CallExpressionNode = {\n callee: { type?: string; name?: string }\n}\n\nfunction isActivateFn(node: unknown): node is FunctionLikeNode {\n if (typeof node !== \"object\" || node === null || !(\"type\" in node)) {\n return false\n }\n\n const candidate = node as FunctionLikeNode\n return (\n (candidate.type === \"FunctionDeclaration\" && candidate.id?.name === \"activate\") ||\n (candidate.type === \"ArrowFunctionExpression\" &&\n candidate.parent?.type === \"Property\" &&\n candidate.parent.key?.type === \"Identifier\" &&\n candidate.parent.key.name === \"activate\")\n )\n}\n\nconst rule: Rule.RuleModule = {\n meta: {\n type: \"suggestion\",\n docs: {\n description: \"activate() should be a pure function (heuristic)\",\n recommended: true,\n },\n messages: {\n hasSideEffect:\n \"activate() should be a pure function. Found call to '{{name}}()' \u2014 side effects break tool selection.\",\n hasAssignment:\n \"activate() should be a pure function. Assignment statements are not allowed.\",\n },\n },\n create(context) {\n let insideActivate = false\n\n return {\n \"FunctionDeclaration, ArrowFunctionExpression\"(node: unknown) {\n if (isActivateFn(node)) insideActivate = true\n },\n \"FunctionDeclaration:exit, ArrowFunctionExpression:exit\"(node: unknown) {\n if (isActivateFn(node)) insideActivate = false\n },\n CallExpression(node: unknown) {\n if (!insideActivate) return\n const { callee } = node as CallExpressionNode\n const calleeName = callee.name\n if (callee.type === \"Identifier\" && calleeName && calleeName !== \"Boolean\") {\n context.report({\n node: node as Rule.Node,\n messageId: \"hasSideEffect\",\n data: { name: calleeName },\n })\n }\n },\n AssignmentExpression(node: unknown) {\n if (insideActivate) {\n context.report({ node: node as Rule.Node, messageId: \"hasAssignment\" })\n }\n },\n }\n },\n}\n\nexport default rule\n", "import type { Rule } from \"eslint\"\n\n// Patterns that suggest manually constructed IDs\nconst MANUAL_ID_PATTERNS = [\n /sha256/i,\n /crypto\\.createHash/,\n /\\.toString\\(16\\)/,\n /\\+ \":\" \\+/,\n /\\+ \"\\/\" \\+/,\n]\n\nconst rule: Rule.RuleModule = {\n meta: {\n type: \"suggestion\",\n docs: {\n description: \"Use nodeID() and edgeID() helpers \u2014 never construct IDs manually\",\n recommended: true,\n },\n messages: {\n manualID:\n \"Looks like a manually constructed node/edge ID. Use nodeID() or edgeID() helpers instead \u2014 the engine uses deterministic hashing and inconsistent IDs break the graph.\",\n },\n },\n create(context) {\n return {\n Property(node) {\n if (\n node.key.type === \"Identifier\" &&\n (node.key.name === \"id\") &&\n node.value.type !== \"CallExpression\"\n ) {\n const src = context.getSourceCode().getText(node.value)\n if (MANUAL_ID_PATTERNS.some(p => p.test(src))) {\n context.report({ node: node.value, messageId: \"manualID\" })\n }\n }\n },\n }\n },\n}\n\nexport default rule\n", "import noNodeApis from \"./rules/no-node-apis.js\"\nimport toolDescriptionLength from \"./rules/tool-description-length.js\"\nimport conceptTermFormat from \"./rules/concept-term-format.js\"\nimport extractReturnType from \"./rules/extract-return-type.js\"\nimport pureActivate from \"./rules/pure-activate.js\"\nimport idHelpersRequired from \"./rules/id-helpers-required.js\"\n\nconst recommended = {\n plugins: {} as Record<string, unknown>,\n rules: {\n \"ce-plugin-sdk/no-node-apis\": \"error\",\n \"ce-plugin-sdk/tool-description-length\": \"error\",\n \"ce-plugin-sdk/concept-term-format\": \"error\",\n \"ce-plugin-sdk/extract-return-type\": \"warn\",\n \"ce-plugin-sdk/pure-activate\": \"warn\",\n \"ce-plugin-sdk/id-helpers-required\": \"warn\",\n },\n}\n\nconst plugin = {\n meta: {\n name: \"@atheory-ai/ce-plugin-sdk\",\n version: \"0.1.0\",\n },\n rules: {\n \"no-node-apis\": noNodeApis,\n \"tool-description-length\": toolDescriptionLength,\n \"concept-term-format\": conceptTermFormat,\n \"extract-return-type\": extractReturnType,\n \"pure-activate\": pureActivate,\n \"id-helpers-required\": idHelpersRequired,\n },\n configs: {\n recommended,\n },\n}\n\nrecommended.plugins[\"ce-plugin-sdk\"] = plugin\n\nexport default plugin\n"],
5
+ "mappings": "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",
6
+ "names": ["rule", "rule", "rule", "rule", "rule"]
7
+ }
@@ -0,0 +1,4 @@
1
+ import type { Rule } from "eslint";
2
+ declare const rule: Rule.RuleModule;
3
+ export default rule;
4
+ //# sourceMappingURL=concept-term-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concept-term-format.d.ts","sourceRoot":"","sources":["../../../src/eslint/rules/concept-term-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAIlC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,UA+BhB,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { Rule } from "eslint";
2
+ declare const rule: Rule.RuleModule;
3
+ export default rule;
4
+ //# sourceMappingURL=extract-return-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-return-type.d.ts","sourceRoot":"","sources":["../../../src/eslint/rules/extract-return-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AA6ClC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,UAmChB,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { Rule } from "eslint";
2
+ declare const rule: Rule.RuleModule;
3
+ export default rule;
4
+ //# sourceMappingURL=id-helpers-required.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-helpers-required.d.ts","sourceRoot":"","sources":["../../../src/eslint/rules/id-helpers-required.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAWlC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,UA4BhB,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { Rule } from "eslint";
2
+ declare const rule: Rule.RuleModule;
3
+ export default rule;
4
+ //# sourceMappingURL=no-node-apis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-node-apis.d.ts","sourceRoot":"","sources":["../../../src/eslint/rules/no-node-apis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AA2BlC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,UA2ChB,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { Rule } from "eslint";
2
+ declare const rule: Rule.RuleModule;
3
+ export default rule;
4
+ //# sourceMappingURL=pure-activate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pure-activate.d.ts","sourceRoot":"","sources":["../../../src/eslint/rules/pure-activate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AA4BlC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,UA2ChB,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { Rule } from "eslint";
2
+ declare const rule: Rule.RuleModule;
3
+ export default rule;
4
+ //# sourceMappingURL=tool-description-length.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-description-length.d.ts","sourceRoot":"","sources":["../../../src/eslint/rules/tool-description-length.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAElC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,UA+BhB,CAAA;AAED,eAAe,IAAI,CAAA"}
package/dist/host.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ import type { SubstrateClient, NodeType, EdgeType } from "./types.js";
2
+ export declare const log: {
3
+ debug: (message: string) => void;
4
+ info: (message: string) => void;
5
+ warn: (message: string) => void;
6
+ error: (message: string) => void;
7
+ };
8
+ export declare function emit(channel: "thinking" | "action" | "debug" | "warning", content: string): void;
9
+ export declare function createSubstrateClient(): SubstrateClient;
10
+ export declare function getConfig<T = unknown>(key: string): T | undefined;
11
+ export declare function nodeID(projectID: string, type: NodeType, canonicalID: string): string;
12
+ export declare function edgeID(sourceID: string, type: EdgeType, targetID: string): string;
13
+ //# sourceMappingURL=host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwB,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAe3F,eAAO,MAAM,GAAG;qBACG,MAAM;oBACN,MAAM;oBACN,MAAM;qBACN,MAAM;CACxB,CAAA;AAID,wBAAgB,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhG;AAID,wBAAgB,qBAAqB,IAAI,eAAe,CAOvD;AAID,wBAAgB,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAIjE;AAID,wBAAgB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAErF;AAED,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjF"}
package/dist/iir.d.ts ADDED
@@ -0,0 +1,83 @@
1
+ export type IIRVisibility = "public" | "private";
2
+ export declare const IIRTypeUnknown = "unknown";
3
+ export interface IIRParam {
4
+ name: string;
5
+ type: string;
6
+ }
7
+ export interface IIRReturn {
8
+ type: string;
9
+ explicit: boolean;
10
+ }
11
+ export interface IIRExpr {
12
+ op: string;
13
+ args?: IIRExpr[];
14
+ text?: string;
15
+ }
16
+ /**
17
+ * A normalized behavior consequence — the `then` action of a clause, structured
18
+ * just enough to compare across languages. `op` is the action: "return", "throw"
19
+ * (Go panic / JS-TS throw / Python raise, folded), or "invoke" (a call). `value`
20
+ * is an opaque canonical payload (the returned expression, the thrown failure's
21
+ * identity, or the invoked callee), omitted when the action carries none.
22
+ */
23
+ export interface IIRConsequence {
24
+ op: "return" | "throw" | "invoke";
25
+ value?: string;
26
+ }
27
+ export interface IIRBehaviorClause {
28
+ when: string;
29
+ then: string;
30
+ whenExpr?: IIRExpr;
31
+ thenExpr?: IIRConsequence;
32
+ }
33
+ /**
34
+ * An observable side effect. Either a bare name ("analytics.track") or an object
35
+ * carrying an optional kind (network | db | io | log | mutation | unclassified)
36
+ * and basis — "resolved" when the kind came from a known effectful API (an
37
+ * import path or recognized client), "heuristic" when it was guessed from a
38
+ * method-name verb. The host accepts both forms; a plugin that can categorize an
39
+ * effect emits the object form, otherwise a bare string.
40
+ */
41
+ export type IIRSideEffect = string | {
42
+ name: string;
43
+ kind?: "network" | "db" | "io" | "log" | "mutation" | "unclassified";
44
+ basis?: "resolved" | "heuristic";
45
+ };
46
+ /**
47
+ * An expected failure outcome. Either a bare code ("amount_below_minimum") or an
48
+ * object carrying an optional kind and source. The kind names *how* the function
49
+ * signals the failure: "constructed" (created inline, e.g. throw new Error("msg")
50
+ * / errors.New), "sentinel" (a named error value/type, e.g. ErrClosed or a custom
51
+ * error class), or "propagated" (an upstream failure forwarded on — a re-throw or
52
+ * `return nil, err`). For a propagated failure, `source` names the forwarded
53
+ * identifier. The host accepts both forms; a code-only failure round-trips as a
54
+ * bare string.
55
+ */
56
+ export type IIRFailureMode = string | {
57
+ code: string;
58
+ kind?: "constructed" | "sentinel" | "propagated";
59
+ source?: string;
60
+ };
61
+ export interface FunctionIntent {
62
+ kind: "FunctionIntent";
63
+ name: string;
64
+ language: string;
65
+ /**
66
+ * The epistemic layer this intent comes from. A plugin lift emits "observed"
67
+ * (ground truth about what the code does); a hand-authored spec is "declared";
68
+ * the shaper emits "inferred". The host defaults an absent origin to declared.
69
+ */
70
+ origin?: "observed" | "declared" | "inferred";
71
+ visibility?: IIRVisibility;
72
+ inputs: IIRParam[];
73
+ returns: IIRReturn;
74
+ behavior: IIRBehaviorClause[];
75
+ sideEffects: IIRSideEffect[];
76
+ failureModes: IIRFailureMode[];
77
+ constraints: string[];
78
+ }
79
+ export interface ExtractedFunction {
80
+ nodeId: string;
81
+ intent: FunctionIntent;
82
+ }
83
+ //# sourceMappingURL=iir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iir.d.ts","sourceRoot":"","sources":["../src/iir.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAA;AAKhD,eAAO,MAAM,cAAc,YAAY,CAAA;AAEvC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,SAAS;IAGxB,IAAI,EAAM,MAAM,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAKD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAK,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAA;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAO,MAAM,CAAA;IACjB,IAAI,EAAO,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,cAAc,CAAA;CAC1B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG;IACnC,IAAI,EAAG,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,UAAU,GAAG,cAAc,CAAA;IACpE,KAAK,CAAC,EAAE,UAAU,GAAG,WAAW,CAAA;CACjC,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG;IACpC,IAAI,EAAK,MAAM,CAAA;IACf,IAAI,CAAC,EAAI,aAAa,GAAG,UAAU,GAAG,YAAY,CAAA;IAClD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAU,gBAAgB,CAAA;IAC9B,IAAI,EAAU,MAAM,CAAA;IACpB,QAAQ,EAAM,MAAM,CAAA;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAO,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;IAClD,UAAU,CAAC,EAAG,aAAa,CAAA;IAC3B,MAAM,EAAQ,QAAQ,EAAE,CAAA;IACxB,OAAO,EAAO,SAAS,CAAA;IACvB,QAAQ,EAAM,iBAAiB,EAAE,CAAA;IACjC,WAAW,EAAG,aAAa,EAAE,CAAA;IAC7B,YAAY,EAAE,cAAc,EAAE,CAAA;IAC9B,WAAW,EAAG,MAAM,EAAE,CAAA;CACvB;AAMD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,cAAc,CAAA;CACvB"}