@octonodes/sdk 0.0.3 → 0.1.5

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 (129) hide show
  1. package/PLUGINS.md +265 -0
  2. package/README.md +107 -9
  3. package/dist/constants.d.ts +1 -0
  4. package/dist/constants.d.ts.map +1 -1
  5. package/dist/constants.js +2 -1
  6. package/dist/constants.js.map +1 -1
  7. package/dist/gen/index.d.ts +2 -2
  8. package/dist/gen/index.d.ts.map +1 -1
  9. package/dist/gen/index.js +4 -3
  10. package/dist/gen/index.js.map +1 -1
  11. package/dist/gen/sdk.gen.d.ts +9 -1
  12. package/dist/gen/sdk.gen.d.ts.map +1 -1
  13. package/dist/gen/sdk.gen.js +21 -3
  14. package/dist/gen/sdk.gen.js.map +1 -1
  15. package/dist/gen/types.gen.d.ts +379 -1
  16. package/dist/gen/types.gen.d.ts.map +1 -1
  17. package/dist/index.d.ts +1 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +2 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/plugins/index.d.ts +2 -0
  22. package/dist/plugins/index.d.ts.map +1 -0
  23. package/dist/plugins/index.js +19 -0
  24. package/dist/plugins/index.js.map +1 -0
  25. package/dist/plugins/schema/constants.d.ts +33 -0
  26. package/dist/plugins/schema/constants.d.ts.map +1 -0
  27. package/dist/plugins/schema/constants.js +207 -0
  28. package/dist/plugins/schema/constants.js.map +1 -0
  29. package/dist/plugins/schema/icons.d.ts +5 -0
  30. package/dist/plugins/schema/icons.d.ts.map +1 -0
  31. package/dist/plugins/schema/icons.js +62 -0
  32. package/dist/plugins/schema/icons.js.map +1 -0
  33. package/dist/plugins/schema/ipc-envelope.d.ts +923 -0
  34. package/dist/plugins/schema/ipc-envelope.d.ts.map +1 -0
  35. package/dist/plugins/schema/ipc-envelope.js +210 -0
  36. package/dist/plugins/schema/ipc-envelope.js.map +1 -0
  37. package/dist/plugins/schema/plugin-sdk/index.d.ts +5 -0
  38. package/dist/plugins/schema/plugin-sdk/index.d.ts.map +1 -0
  39. package/dist/plugins/schema/plugin-sdk/index.js +25 -0
  40. package/dist/plugins/schema/plugin-sdk/index.js.map +1 -0
  41. package/dist/plugins/schema/plugin.d.ts +808 -0
  42. package/dist/plugins/schema/plugin.d.ts.map +1 -0
  43. package/dist/plugins/schema/plugin.js +196 -0
  44. package/dist/plugins/schema/plugin.js.map +1 -0
  45. package/dist/plugins/sdk/define-node.d.ts +103 -0
  46. package/dist/plugins/sdk/define-node.d.ts.map +1 -0
  47. package/dist/plugins/sdk/define-node.js +58 -0
  48. package/dist/plugins/sdk/define-node.js.map +1 -0
  49. package/dist/plugins/sdk/definitions/compiler/catalog.d.ts +3 -0
  50. package/dist/plugins/sdk/definitions/compiler/catalog.d.ts.map +1 -0
  51. package/dist/plugins/sdk/definitions/compiler/catalog.js +133 -0
  52. package/dist/plugins/sdk/definitions/compiler/catalog.js.map +1 -0
  53. package/dist/plugins/sdk/definitions/compiler/constants.d.ts +6 -0
  54. package/dist/plugins/sdk/definitions/compiler/constants.d.ts.map +1 -0
  55. package/dist/plugins/sdk/definitions/compiler/constants.js +10 -0
  56. package/dist/plugins/sdk/definitions/compiler/constants.js.map +1 -0
  57. package/dist/plugins/sdk/definitions/compiler/index.d.ts +7 -0
  58. package/dist/plugins/sdk/definitions/compiler/index.d.ts.map +1 -0
  59. package/dist/plugins/sdk/definitions/compiler/index.js +411 -0
  60. package/dist/plugins/sdk/definitions/compiler/index.js.map +1 -0
  61. package/dist/plugins/sdk/definitions/compiler/literals.d.ts +5 -0
  62. package/dist/plugins/sdk/definitions/compiler/literals.d.ts.map +1 -0
  63. package/dist/plugins/sdk/definitions/compiler/literals.js +78 -0
  64. package/dist/plugins/sdk/definitions/compiler/literals.js.map +1 -0
  65. package/dist/plugins/sdk/definitions/compiler/schemas.d.ts +4 -0
  66. package/dist/plugins/sdk/definitions/compiler/schemas.d.ts.map +1 -0
  67. package/dist/plugins/sdk/definitions/compiler/schemas.js +95 -0
  68. package/dist/plugins/sdk/definitions/compiler/schemas.js.map +1 -0
  69. package/dist/plugins/sdk/definitions/compiler/types.d.ts +20 -0
  70. package/dist/plugins/sdk/definitions/compiler/types.d.ts.map +1 -0
  71. package/dist/plugins/sdk/definitions/compiler/types.js +3 -0
  72. package/dist/plugins/sdk/definitions/compiler/types.js.map +1 -0
  73. package/dist/plugins/sdk/definitions/index.d.ts +7 -0
  74. package/dist/plugins/sdk/definitions/index.d.ts.map +1 -0
  75. package/dist/plugins/sdk/definitions/index.js +16 -0
  76. package/dist/plugins/sdk/definitions/index.js.map +1 -0
  77. package/dist/plugins/sdk/definitions/npm/emit/js.d.ts +4 -0
  78. package/dist/plugins/sdk/definitions/npm/emit/js.d.ts.map +1 -0
  79. package/dist/plugins/sdk/definitions/npm/emit/js.js +190 -0
  80. package/dist/plugins/sdk/definitions/npm/emit/js.js.map +1 -0
  81. package/dist/plugins/sdk/definitions/npm/types.d.ts +63 -0
  82. package/dist/plugins/sdk/definitions/npm/types.d.ts.map +1 -0
  83. package/dist/plugins/sdk/definitions/npm/types.js +3 -0
  84. package/dist/plugins/sdk/definitions/npm/types.js.map +1 -0
  85. package/dist/plugins/sdk/definitions/types.d.ts +43 -0
  86. package/dist/plugins/sdk/definitions/types.d.ts.map +1 -0
  87. package/dist/plugins/sdk/definitions/types.js +3 -0
  88. package/dist/plugins/sdk/definitions/types.js.map +1 -0
  89. package/dist/plugins/sdk/json-schema.d.ts +17 -0
  90. package/dist/plugins/sdk/json-schema.d.ts.map +1 -0
  91. package/dist/plugins/sdk/json-schema.js +79 -0
  92. package/dist/plugins/sdk/json-schema.js.map +1 -0
  93. package/dist/plugins/sdk/nodes/index.d.ts +5 -0
  94. package/dist/plugins/sdk/nodes/index.d.ts.map +1 -0
  95. package/dist/plugins/sdk/nodes/index.js +12 -0
  96. package/dist/plugins/sdk/nodes/index.js.map +1 -0
  97. package/dist/plugins/sdk/plugin/index.d.ts +3 -0
  98. package/dist/plugins/sdk/plugin/index.d.ts.map +1 -0
  99. package/dist/plugins/sdk/plugin/index.js +8 -0
  100. package/dist/plugins/sdk/plugin/index.js.map +1 -0
  101. package/dist/plugins/sdk/plugin.d.ts +7 -0
  102. package/dist/plugins/sdk/plugin.d.ts.map +1 -0
  103. package/dist/plugins/sdk/plugin.js +74 -0
  104. package/dist/plugins/sdk/plugin.js.map +1 -0
  105. package/dist/plugins/sdk/plugin.types.d.ts +15 -0
  106. package/dist/plugins/sdk/plugin.types.d.ts.map +1 -0
  107. package/dist/plugins/sdk/plugin.types.js +3 -0
  108. package/dist/plugins/sdk/plugin.types.js.map +1 -0
  109. package/dist/plugins/sdk/plugins/define-node.d.ts +29 -0
  110. package/dist/plugins/sdk/plugins/define-node.d.ts.map +1 -0
  111. package/dist/plugins/sdk/plugins/define-node.js +16 -0
  112. package/dist/plugins/sdk/plugins/define-node.js.map +1 -0
  113. package/dist/plugins/sdk/plugins/index.d.ts +10 -0
  114. package/dist/plugins/sdk/plugins/index.d.ts.map +1 -0
  115. package/dist/plugins/sdk/plugins/index.js +23 -0
  116. package/dist/plugins/sdk/plugins/index.js.map +1 -0
  117. package/dist/plugins/sdk/plugins/types.d.ts +34 -0
  118. package/dist/plugins/sdk/plugins/types.d.ts.map +1 -0
  119. package/dist/plugins/sdk/plugins/types.js +3 -0
  120. package/dist/plugins/sdk/plugins/types.js.map +1 -0
  121. package/dist/plugins/sdk/project/index.d.ts +5 -0
  122. package/dist/plugins/sdk/project/index.d.ts.map +1 -0
  123. package/dist/plugins/sdk/project/index.js +10 -0
  124. package/dist/plugins/sdk/project/index.js.map +1 -0
  125. package/dist/plugins/sdk/runner.d.ts +36 -0
  126. package/dist/plugins/sdk/runner.d.ts.map +1 -0
  127. package/dist/plugins/sdk/runner.js +324 -0
  128. package/dist/plugins/sdk/runner.js.map +1 -0
  129. package/package.json +65 -5
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.schemaFor = schemaFor;
37
+ // Generated from packages/plugin-runtime/src/definitions/compiler/schemas.ts. Do not edit; run the Octonode SDK sync.
38
+ const ts = __importStar(require("typescript"));
39
+ /** Public plugin contracts must be finite JSON values, never silently widened to unknown. */
40
+ function schemaFor(checker, type, seen = new Set(), optional = false) {
41
+ const fail = () => {
42
+ throw new Error(`Cannot infer a JSON contract for ${checker.typeToString(type)}; use a concrete JSON-compatible function signature`);
43
+ };
44
+ if (seen.has(type))
45
+ return fail();
46
+ const next = new Set(seen).add(type);
47
+ if (type.isUnion()) {
48
+ const members = type.types.filter((item) => !optional || !(item.flags & ts.TypeFlags.Undefined));
49
+ if (members.length === 1)
50
+ return schemaFor(checker, members[0], seen);
51
+ if (members.every((item) => item.flags & ts.TypeFlags.BooleanLiteral))
52
+ return { type: "boolean" };
53
+ if (members.every((item) => item.isStringLiteral() || item.isNumberLiteral())) {
54
+ const values = members.map((item) => item.value);
55
+ if (values.every((value) => typeof value === typeof values[0]))
56
+ return { type: typeof values[0], enum: values };
57
+ }
58
+ return fail();
59
+ }
60
+ if (type.isStringLiteral() || type.isNumberLiteral())
61
+ return { type: typeof type.value, enum: [type.value] };
62
+ if (type.flags & ts.TypeFlags.String)
63
+ return { type: "string" };
64
+ if (type.flags & ts.TypeFlags.Number)
65
+ return { type: "number" };
66
+ if (type.flags & ts.TypeFlags.BooleanLike)
67
+ return { type: "boolean" };
68
+ if (type.flags & ts.TypeFlags.Null)
69
+ return { type: "null" };
70
+ if (checker.isArrayType(type))
71
+ return { type: "array", items: schemaFor(checker, checker.getTypeArguments(type)[0], next) };
72
+ if (!(type.flags & ts.TypeFlags.Object ||
73
+ (type.isIntersection() && type.types.every((member) => member.flags & ts.TypeFlags.Object))) ||
74
+ checker.isTupleType(type) ||
75
+ type.getCallSignatures().length ||
76
+ type.getConstructSignatures().length ||
77
+ checker.getIndexInfosOfType(type).length)
78
+ return fail();
79
+ if ((type.isIntersection() ? type.types : [type]).some((member) => member.getSymbol()?.declarations?.some((declaration) => ts.isClassDeclaration(declaration))))
80
+ return fail();
81
+ const properties = Object.create(null);
82
+ const required = [];
83
+ for (const property of type.getProperties()) {
84
+ const declaration = property.valueDeclaration ?? property.declarations?.[0];
85
+ if (!declaration)
86
+ return fail();
87
+ const value = checker.getTypeOfSymbolAtLocation(property, declaration);
88
+ const optional = !!(property.flags & ts.SymbolFlags.Optional);
89
+ properties[property.name] = schemaFor(checker, value, next, optional);
90
+ if (!optional)
91
+ required.push(property.name);
92
+ }
93
+ return { type: "object", properties, required };
94
+ }
95
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../../../src/plugins/sdk/definitions/compiler/schemas.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,8BA0DC;AA9DD,sHAAsH;AACtH,+CAAiC;AAEjC,6FAA6F;AAC7F,SAAgB,SAAS,CACvB,OAAuB,EACvB,IAAa,EACb,OAAO,IAAI,GAAG,EAAW,EACzB,QAAQ,GAAG,KAAK;IAEhB,MAAM,IAAI,GAAG,GAAU,EAAE;QACvB,MAAM,IAAI,KAAK,CACb,oCAAoC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,qDAAqD,CACpH,CAAC;IACJ,CAAC,CAAC;IACF,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;QACjG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAClG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC;YAC9E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAE,IAAuB,CAAC,KAAK,CAAC,CAAC;YACrE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAClH,CAAC;QACD,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;IACD,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IAC7G,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAChE,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAChE,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACtE,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC5D,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,IAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;IACnH,IACE,CAAC,CACC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM;QAChC,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAC5F;QACD,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM;QAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC,MAAM;QACpC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,MAAM;QAExC,OAAO,IAAI,EAAE,CAAC;IAChB,IACE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAC5D,MAAM,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAC5F;QAED,OAAO,IAAI,EAAE,CAAC;IAChB,MAAM,UAAU,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,OAAO,CAAC,yBAAyB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC9D,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACtE,IAAI,CAAC,QAAQ;YAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAClD,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { PluginManifest } from "../../../schema/plugin-sdk";
2
+ import type { NodeCustomization, NpmNodeHandle, WorkflowNodeHandle } from "../types";
3
+ export interface CompiledNode {
4
+ path: string;
5
+ exportName: string;
6
+ symbol: string;
7
+ parameters: string[];
8
+ customization: NodeCustomization;
9
+ inputs?: Record<string, unknown>;
10
+ outputs?: Record<string, unknown>;
11
+ npm?: NpmNodeHandle;
12
+ workflow?: WorkflowNodeHandle;
13
+ }
14
+ export interface CompiledDefinition {
15
+ kind: "project" | "plugin";
16
+ nodes: CompiledNode[];
17
+ manifest?: PluginManifest;
18
+ assets: string[];
19
+ }
20
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/sdk/definitions/compiler/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAErF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,iBAAiB,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC3B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/plugins/sdk/definitions/compiler/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { NodeCustomization, NodeReference, ProjectDefinition, PluginDefinition } from "./types";
2
+ /** Compile-time declarations. Octonode reads these only in the reserved project and plugin files. */
3
+ export declare function defineNode(implementation: NodeReference["implementation"], customization?: NodeCustomization): NodeReference;
4
+ export declare function defineProject(definition?: ProjectDefinition): ProjectDefinition;
5
+ export declare function definePlugin(definition: PluginDefinition): PluginDefinition;
6
+ export type { NodeCustomization, NodeReference, ProjectDefinition, PluginDefinition } from "./types";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/sdk/definitions/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAErG,qGAAqG;AACrG,wBAAgB,UAAU,CACxB,cAAc,EAAE,aAAa,CAAC,gBAAgB,CAAC,EAC/C,aAAa,GAAE,iBAAsB,GACpC,aAAa,CAEf;AAED,wBAAgB,aAAa,CAAC,UAAU,GAAE,iBAAsB,GAAG,iBAAiB,CAEnF;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,gBAAgB,GAAG,gBAAgB,CAE3E;AAED,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineNode = defineNode;
4
+ exports.defineProject = defineProject;
5
+ exports.definePlugin = definePlugin;
6
+ /** Compile-time declarations. Octonode reads these only in the reserved project and plugin files. */
7
+ function defineNode(implementation, customization = {}) {
8
+ return { implementation, customization };
9
+ }
10
+ function defineProject(definition = {}) {
11
+ return definition;
12
+ }
13
+ function definePlugin(definition) {
14
+ return definition;
15
+ }
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/sdk/definitions/index.ts"],"names":[],"mappings":";;AAIA,gCAKC;AAED,sCAEC;AAED,oCAEC;AAdD,qGAAqG;AACrG,SAAgB,UAAU,CACxB,cAA+C,EAC/C,gBAAmC,EAAE;IAErC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC;AAC3C,CAAC;AAED,SAAgB,aAAa,CAAC,aAAgC,EAAE;IAC9D,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAgB,YAAY,CAAC,UAA4B;IACvD,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { CompiledNpmPlugin } from "../types";
2
+ /** Render every generated file for the plugin (paths relative to the plugin folder). */
3
+ export declare function emitNpmJsFiles(plan: CompiledNpmPlugin): Record<string, string>;
4
+ //# sourceMappingURL=js.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/sdk/definitions/npm/emit/js.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAqB,MAAM,UAAU,CAAC;AA2LrE,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAK9E"}
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.emitNpmJsFiles = emitNpmJsFiles;
4
+ /** Render the single IPC adapter used by every node extracted from a package. */
5
+ function runner(plan) {
6
+ const descriptors = Object.fromEntries(plan.nodes.map((node) => [node.id, node]));
7
+ const cases = plan.nodes.map((node) => ` case ${JSON.stringify(node.id)}: {\n${nodeBody(node)}\n }`).join("\n");
8
+ return `// Generated npm adapter: the original package remains the implementation.
9
+ const { createRequire, register } = require("node:module");
10
+ const { existsSync, realpathSync } = require("node:fs");
11
+ const { dirname, join } = require("node:path");
12
+ const { pathToFileURL } = require("node:url");
13
+ const OCTONODE_PROJECT_ROOT = process["env"].OCTONODE_PROJECT_ROOT;
14
+ class NodeError extends Error {
15
+ constructor(message, code = "NON_RETRYABLE", retryable = false) {
16
+ super(message);
17
+ this.name = "NodeError";
18
+ this.code = code;
19
+ this.retryable = retryable;
20
+ }
21
+ }
22
+ function send(envelope) {
23
+ process.stdout.write(JSON.stringify(envelope) + "\\n");
24
+ }
25
+ function resolveExport(pkg, name) {
26
+ if (name === "default") {
27
+ if (typeof pkg === "function") return pkg;
28
+ return pkg && pkg.default !== undefined ? pkg.default : pkg;
29
+ }
30
+ return pkg ? pkg[name] : undefined;
31
+ }
32
+ function toJson(value) {
33
+ if (value === undefined) return null;
34
+ try {
35
+ const json = JSON.stringify(value);
36
+ if (json === undefined) throw new Error();
37
+ return JSON.parse(json);
38
+ } catch {
39
+ throw new NodeError("npm export returned a value that is not JSON-serializable", "VALIDATION_ERROR");
40
+ }
41
+ }
42
+ const NODES = ${JSON.stringify(descriptors, null, 2)};
43
+ const node = NODES[process.argv[2]];
44
+ if (require.main === module && !node) throw new Error('unknown generated npm node "' + process.argv[2] + '"');
45
+ const projectRoot = realpathSync(OCTONODE_PROJECT_ROOT || process.cwd());
46
+ for (let root = projectRoot; ; root = dirname(root)) {
47
+ const pnp = join(root, ".pnp.cjs");
48
+ if (existsSync(pnp)) {
49
+ require(pnp).setup();
50
+ const loader = join(root, ".pnp.loader.mjs");
51
+ if (existsSync(loader)) register(pathToFileURL(loader));
52
+ break;
53
+ }
54
+ if (existsSync(join(root, ".git")) || dirname(root) === root) break;
55
+ }
56
+ const projectRequire = createRequire(join(projectRoot, "package.json"));
57
+ const packages = new Map();
58
+ async function loadPkg(specifier = ${JSON.stringify(plan.packageName)}) {
59
+ if (!packages.has(specifier)) packages.set(specifier, (async () => {
60
+ let entry;
61
+ try { entry = projectRequire.resolve(specifier); }
62
+ catch {
63
+ const { resolvePackage } = await import("./npm-resolve.mjs");
64
+ entry = resolvePackage(specifier, pathToFileURL(join(projectRoot, "package.json")).href);
65
+ return import(entry);
66
+ }
67
+ try { return projectRequire(entry); }
68
+ catch (error) {
69
+ if (error.code !== "ERR_REQUIRE_ESM" && error.code !== "ERR_REQUIRE_ASYNC_MODULE") throw error;
70
+ return import(pathToFileURL(entry).href);
71
+ }
72
+ })());
73
+ return packages.get(specifier);
74
+ }
75
+ async function bindClients(inputs, node) {
76
+ const bound = Object.create(null);
77
+ // Check every credential before loading factories; no partially initialized clients.
78
+ for (const [name, binding] of Object.entries(node.bindings || {})) {
79
+ if (Object.hasOwn(inputs, name)) throw new NodeError("SDK client parameters cannot be supplied as inputs", "VALIDATION_ERROR");
80
+ for (const variable of Object.values(binding.env || {})) {
81
+ if (!process.env[variable]) throw new NodeError("Missing SDK connection credentials", "VALIDATION_ERROR");
82
+ }
83
+ }
84
+ for (const [name, binding] of Object.entries(node.bindings || {})) {
85
+ const options = JSON.parse(JSON.stringify(binding.options || {}));
86
+ for (const [path, variable] of Object.entries(binding.env || {})) {
87
+ const keys = path.split(".");
88
+ if (keys.some((key) => ["__proto__", "prototype", "constructor"].includes(key)))
89
+ throw new NodeError("Unsafe SDK option path", "VALIDATION_ERROR");
90
+ let target = options;
91
+ for (const key of keys.slice(0, -1)) {
92
+ if (!Object.hasOwn(target, key)) target[key] = {};
93
+ if (!target[key] || typeof target[key] !== "object" || Array.isArray(target[key]))
94
+ throw new NodeError("SDK option path must point into an object", "VALIDATION_ERROR");
95
+ target = target[key];
96
+ }
97
+ target[keys[keys.length - 1]] = process.env[variable];
98
+ }
99
+ const module = await loadPkg(binding.module);
100
+ if (!Object.hasOwn(module, binding.export) || typeof module[binding.export] !== "function")
101
+ throw new NodeError("SDK client factory is not exported by the package", "VALIDATION_ERROR");
102
+ bound[name] = await module[binding.export](options);
103
+ }
104
+ return bound;
105
+ }
106
+ async function invoke(inputs, node = NODES[process.argv[2]]) {
107
+ if (!node) throw new NodeError("unknown npm node", "VALIDATION_ERROR");
108
+ try {
109
+ const bound = await bindClients(inputs, node);
110
+ const pkg = await loadPkg(node.moduleSpecifier || ${JSON.stringify(plan.packageName)});
111
+ switch (node.id) {
112
+ ${cases}
113
+ default: throw new NodeError('unknown generated npm node "' + node.id + '"', "VALIDATION_ERROR");
114
+ }
115
+ } catch (error) {
116
+ // SDK errors can embed authorization headers or response bodies. Never forward them over IPC.
117
+ if (Object.keys(node.bindings || {}).length && !(error instanceof NodeError))
118
+ throw new NodeError("SDK invocation failed; check the connection and request", "RUNTIME_ERROR");
119
+ throw error;
120
+ }
121
+ }
122
+ function start() {
123
+ let buf = "";
124
+ process.stdin.setEncoding("utf8");
125
+ process.stdin.on("data", (c) => (buf += c));
126
+ process.stdin.on("end", async () => {
127
+ let rid = "unknown";
128
+ try {
129
+ const req = JSON.parse(buf || "{}");
130
+ rid = req.invocationId || "unknown";
131
+ if (req.type === "describe") {
132
+ send({ octonode: "1", type: "manifest", invocationId: rid, status: "ok", manifest: {
133
+ id: node.id, language: "javascript", description: node.description,
134
+ inputs: node.inputsSchema, outputs: node.outputsSchema,
135
+ } });
136
+ } else if (req.type === "invoke") {
137
+ const outputs = await invoke(req.inputs || {}, node);
138
+ send({ octonode: "1", type: "result", invocationId: rid, status: "ok", outputs });
139
+ } else {
140
+ throw new NodeError(\`unsupported request type "\${req.type}"\`, "VALIDATION_ERROR");
141
+ }
142
+ } catch (err) {
143
+ send({
144
+ octonode: "1", type: "result", invocationId: rid, status: "error",
145
+ error: { code: err.code || "RUNTIME_ERROR", message: String(err && err.message), retryable: Boolean(err.retryable) },
146
+ });
147
+ }
148
+ });
149
+ }
150
+ module.exports.invokeNode = (id, inputs) => invoke(inputs, NODES[id]);
151
+ if (require.main === module) start();
152
+ `;
153
+ }
154
+ function nodeBody(node) {
155
+ if (node.generic) {
156
+ return ` if (typeof inputs.export !== "string" || !inputs.export) {
157
+ throw new NodeError("\`export\` is required", "VALIDATION_ERROR");
158
+ }
159
+ const target = resolveExport(pkg, inputs.export);
160
+ if (target === undefined) {
161
+ throw new NodeError(\`unknown export "\${inputs.export}"\`, "VALIDATION_ERROR");
162
+ }
163
+ if (typeof target !== "function") return { result: toJson(target), dryRun: false };
164
+ const args = Array.isArray(inputs.args) ? inputs.args : [];
165
+ return { result: toJson(await target(...args)), dryRun: false };`;
166
+ }
167
+ const positional = node.params.filter((p) => !p.rest).map((p) => p.name);
168
+ const rest = node.params.find((p) => p.rest);
169
+ const argsLines = node.permissive
170
+ ? ` const args = Array.isArray(inputs.args) ? inputs.args : [];`
171
+ : ` const args = ${JSON.stringify(positional)}.map((n) => Object.hasOwn(bound, n) ? bound[n] : inputs[n]);
172
+ while (args.length && args[args.length - 1] === undefined) args.pop();${rest
173
+ ? `
174
+ if (Array.isArray(inputs[${JSON.stringify(rest.name)}])) args.push(...inputs[${JSON.stringify(rest.name)}]);`
175
+ : ""}`;
176
+ return ` const fn = resolveExport(pkg, ${JSON.stringify(node.exportName)});
177
+ if (typeof fn !== "function") {
178
+ throw new NodeError('export ${node.exportName} is not a function', "VALIDATION_ERROR");
179
+ }
180
+ ${argsLines}
181
+ return { result: toJson(await fn(...args)), dryRun: false };`;
182
+ }
183
+ /** Render every generated file for the plugin (paths relative to the plugin folder). */
184
+ function emitNpmJsFiles(plan) {
185
+ return {
186
+ "nodes/npm.cjs": runner(plan),
187
+ "nodes/npm-resolve.mjs": "export const resolvePackage = (name, parent) => import.meta.resolve(name, parent);\n",
188
+ };
189
+ }
190
+ //# sourceMappingURL=js.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js.js","sourceRoot":"","sources":["../../../../../../src/plugins/sdk/definitions/npm/emit/js.ts"],"names":[],"mappings":";;AA8LA,wCAKC;AA/LD,iFAAiF;AACjF,SAAS,MAAM,CAAC,IAAuB;IACrC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtH,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAkCO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;;;;;;;;;;;;;;;;qCAgBf,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sDAoDf,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;;EAEpF,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCN,CAAC;AACF,CAAC;AAED,SAAS,QAAQ,CAAC,IAAuB;IACvC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO;;;;;;;;;mEASwD,CAAC;IAClE,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU;QAC/B,CAAC,CAAC,+DAA+D;QACjE,CAAC,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;0EAE9C,IAAI;YACF,CAAC,CAAC;6BACqB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YACzG,CAAC,CAAC,EACN,EAAE,CAAC;IAEH,OAAO,mCAAmC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;;kCAEzC,IAAI,CAAC,UAAU;;EAE/C,SAAS;+DACoD,CAAC;AAChE,CAAC;AAED,wFAAwF;AACxF,SAAgB,cAAc,CAAC,IAAuB;IACpD,OAAO;QACL,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC;QAC7B,uBAAuB,EAAE,sFAAsF;KAChH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,63 @@
1
+ import type { NpmClientBinding } from "../../../schema/plugin-sdk";
2
+ export interface NpmPackageMeta {
3
+ /** Real npm package name (e.g. "@scope/pkg"). */
4
+ name: string;
5
+ /** Package entry point, including an optional exported subpath. */
6
+ moduleSpecifier?: string;
7
+ /** Resolved, pinned version. */
8
+ version: string;
9
+ description?: string;
10
+ /** Entry type-declaration file, or null when the package ships no types. */
11
+ dtsPath: string | null;
12
+ /** Fallback export names discovered at runtime when dtsPath is null. */
13
+ runtimeExports?: string[];
14
+ /** Exact package-manager spec; local fixtures retain their file: source. */
15
+ installSpec?: string;
16
+ }
17
+ export interface NpmParam {
18
+ name: string;
19
+ required: boolean;
20
+ rest: boolean;
21
+ schema: Record<string, unknown>;
22
+ }
23
+ export interface NpmNodeDescriptor {
24
+ id: string;
25
+ moduleSpecifier?: string;
26
+ bindings?: Record<string, NpmClientBinding>;
27
+ /** Export name on the package; "default" for the default export; "" for the generic call node. */
28
+ exportName: string;
29
+ /** Declared parameter order — the emitted node maps named inputs to positional args in this order. */
30
+ params: NpmParam[];
31
+ inputsSchema: Record<string, unknown>;
32
+ outputsSchema: Record<string, unknown>;
33
+ description?: string;
34
+ /** True for the generic `call` escape-hatch node. */
35
+ generic?: boolean;
36
+ /** True when params are unknown (untyped fallback): inputs are `{ args: any[] }`. */
37
+ permissive?: boolean;
38
+ }
39
+ export interface CompiledNpmPlugin {
40
+ /** A valid octonode.plugin.json object. */
41
+ manifest: Record<string, unknown>;
42
+ packageName: string;
43
+ moduleSpecifier?: string;
44
+ packageVersion: string;
45
+ nodes: NpmNodeDescriptor[];
46
+ warnings: string[];
47
+ }
48
+ export interface NpmGenerateOptions {
49
+ cacheRoot?: string;
50
+ /** Package spec: `name`, `name@version`, or a local folder path (tests/offline). */
51
+ pkg: string;
52
+ moduleSpecifier?: string;
53
+ id?: string;
54
+ name?: string;
55
+ icon?: string;
56
+ description?: string;
57
+ version?: string;
58
+ include?: string[];
59
+ exclude?: string[];
60
+ dir?: string;
61
+ force?: boolean;
62
+ }
63
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/sdk/definitions/npm/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC5C,kGAAkG;IAClG,UAAU,EAAE,MAAM,CAAC;IACnB,sGAAsG;IACtG,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qFAAqF;IACrF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/plugins/sdk/definitions/npm/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,43 @@
1
+ import type { PluginManifestInput, PluginNode } from "../../schema/plugin-sdk";
2
+ export type NodeCustomization = Partial<Pick<PluginNode, "id" | "label" | "symbol" | "icon" | "description" | "defaults" | "connections" | "env" | "trigger" | "ui" | "bindings">>;
3
+ export interface NodeReference {
4
+ readonly implementation: ((...args: never[]) => unknown) | NpmNodeHandle | WorkflowNodeHandle;
5
+ readonly customization: NodeCustomization;
6
+ }
7
+ export interface NpmNodeHandle {
8
+ readonly kind: "npm";
9
+ readonly packageName: string;
10
+ readonly packageVersion: string;
11
+ readonly installSpec?: string;
12
+ readonly descriptor: {
13
+ id: string;
14
+ exportName: string;
15
+ moduleSpecifier?: string;
16
+ params: {
17
+ name: string;
18
+ required: boolean;
19
+ rest: boolean;
20
+ schema: Record<string, unknown>;
21
+ }[];
22
+ inputsSchema: Record<string, unknown>;
23
+ outputsSchema: Record<string, unknown>;
24
+ description?: string;
25
+ generic?: boolean;
26
+ permissive?: boolean;
27
+ };
28
+ }
29
+ export interface WorkflowNodeHandle {
30
+ readonly kind: "workflow";
31
+ readonly definition: PluginNode;
32
+ readonly key: string;
33
+ readonly files: Record<string, string>;
34
+ readonly dependencies: Record<string, string>;
35
+ }
36
+ export interface ProjectDefinition {
37
+ readonly nodes?: readonly NodeReference[];
38
+ }
39
+ export type PluginDefinition = Omit<PluginManifestInput, "nodes"> & {
40
+ readonly nodes: readonly NodeReference[];
41
+ readonly assets?: readonly string[];
42
+ };
43
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/plugins/sdk/definitions/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE/E,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,IAAI,CACF,UAAU,EACR,IAAI,GACJ,OAAO,GACP,QAAQ,GACR,MAAM,GACN,aAAa,GACb,UAAU,GACV,aAAa,GACb,KAAK,GACL,SAAS,GACT,IAAI,GACJ,UAAU,CACb,CACF,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,GAAG,aAAa,GAAG,kBAAkB,CAAC;IAC9F,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;CAC3C;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,EAAE,CAAC;QAC9F,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CAC3C;AAED,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,GAAG;IAClE,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/plugins/sdk/definitions/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * A deliberately tiny JSON Schema validator covering the common subset Octonode
3
+ * nodes use to describe their I/O: `type`, `required`, `properties`, `items`,
4
+ * and `enum`. It is intentionally NOT a full JSON Schema implementation — the
5
+ * point is that every language SDK can carry an equivalent ~80-line validator
6
+ * with zero dependencies, so the contract is enforced identically everywhere.
7
+ *
8
+ * Unknown/unsupported keywords are ignored (treated as "no constraint"), so a
9
+ * richer schema still validates its supported parts rather than failing hard.
10
+ */
11
+ export type JsonSchema = Record<string, unknown>;
12
+ export interface ValidationError {
13
+ path: string;
14
+ message: string;
15
+ }
16
+ export declare function validate(schema: JsonSchema | undefined, data: unknown): ValidationError[];
17
+ //# sourceMappingURL=json-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../../../src/plugins/sdk/json-schema.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,eAAe,EAAE,CAKzF"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validate = validate;
4
+ function validate(schema, data) {
5
+ if (!schema)
6
+ return [];
7
+ const errors = [];
8
+ walk(schema, data, "$", errors);
9
+ return errors;
10
+ }
11
+ function walk(schema, data, path, errors) {
12
+ const allowed = normalizeTypes(schema.type);
13
+ if (allowed.length > 0 && !allowed.some((t) => matchesType(t, data))) {
14
+ errors.push({ path, message: `expected type ${allowed.join("|")}, got ${jsonType(data)}` });
15
+ return; // type is wrong; nested checks would be noise
16
+ }
17
+ if (Array.isArray(schema.enum) && !schema.enum.some((v) => deepEqual(v, data))) {
18
+ errors.push({ path, message: `value is not one of the allowed enum values` });
19
+ }
20
+ if (isPlainObject(data)) {
21
+ const required = Array.isArray(schema.required) ? schema.required : [];
22
+ for (const key of required) {
23
+ if (!(key in data))
24
+ errors.push({ path: `${path}.${key}`, message: `missing required property` });
25
+ }
26
+ const props = isPlainObject(schema.properties) ? schema.properties : undefined;
27
+ if (props) {
28
+ for (const [key, sub] of Object.entries(props)) {
29
+ if (key in data && isPlainObject(sub)) {
30
+ walk(sub, data[key], `${path}.${key}`, errors);
31
+ }
32
+ }
33
+ }
34
+ }
35
+ if (Array.isArray(data) && isPlainObject(schema.items)) {
36
+ data.forEach((item, i) => walk(schema.items, item, `${path}[${i}]`, errors));
37
+ }
38
+ }
39
+ function normalizeTypes(type) {
40
+ if (typeof type === "string")
41
+ return [type];
42
+ if (Array.isArray(type))
43
+ return type.filter((t) => typeof t === "string");
44
+ return [];
45
+ }
46
+ function matchesType(type, data) {
47
+ switch (type) {
48
+ case "object":
49
+ return isPlainObject(data);
50
+ case "array":
51
+ return Array.isArray(data);
52
+ case "string":
53
+ return typeof data === "string";
54
+ case "number":
55
+ return typeof data === "number" && Number.isFinite(data);
56
+ case "integer":
57
+ return typeof data === "number" && Number.isInteger(data);
58
+ case "boolean":
59
+ return typeof data === "boolean";
60
+ case "null":
61
+ return data === null;
62
+ default:
63
+ return true; // unknown declared type → don't constrain
64
+ }
65
+ }
66
+ function jsonType(data) {
67
+ if (data === null)
68
+ return "null";
69
+ if (Array.isArray(data))
70
+ return "array";
71
+ return typeof data;
72
+ }
73
+ function isPlainObject(v) {
74
+ return typeof v === "object" && v !== null && !Array.isArray(v);
75
+ }
76
+ function deepEqual(a, b) {
77
+ return JSON.stringify(a) === JSON.stringify(b);
78
+ }
79
+ //# sourceMappingURL=json-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema.js","sourceRoot":"","sources":["../../../src/plugins/sdk/json-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { NpmNodeHandle, WorkflowNodeHandle } from "../definitions/types";
2
+ /** Generated inventory declaration; the compiler reads its literal argument. */
3
+ export declare function npmNode(handle: Omit<NpmNodeHandle, "kind">): NpmNodeHandle;
4
+ export declare function workflowNode(handle: Omit<WorkflowNodeHandle, "kind">): WorkflowNodeHandle;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/sdk/nodes/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE9E,gFAAgF;AAChF,wBAAgB,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG,aAAa,CAE1E;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,GAAG,kBAAkB,CAEzF"}