@farmslot/protocol 0.9.0 → 0.11.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 (102) hide show
  1. package/CHANGELOG.md +27 -2
  2. package/README.md +12 -4
  3. package/dist/agents/roles.js +2 -2
  4. package/dist/agents/roles.js.map +1 -1
  5. package/dist/contracts/agents.d.ts +7 -0
  6. package/dist/contracts/agents.d.ts.map +1 -1
  7. package/dist/contracts/backlog.d.ts +11 -0
  8. package/dist/contracts/backlog.d.ts.map +1 -1
  9. package/dist/contracts/backlog.js.map +1 -1
  10. package/dist/contracts/bug-input.d.ts +8 -0
  11. package/dist/contracts/bug-input.d.ts.map +1 -1
  12. package/dist/contracts/bug-input.js +14 -2
  13. package/dist/contracts/bug-input.js.map +1 -1
  14. package/dist/contracts/bug-score.d.ts +73 -0
  15. package/dist/contracts/bug-score.d.ts.map +1 -0
  16. package/dist/contracts/bug-score.js +208 -0
  17. package/dist/contracts/bug-score.js.map +1 -0
  18. package/dist/contracts/dispatch.d.ts +5 -1
  19. package/dist/contracts/dispatch.d.ts.map +1 -1
  20. package/dist/contracts/index.d.ts +1 -0
  21. package/dist/contracts/index.d.ts.map +1 -1
  22. package/dist/contracts/index.js +1 -0
  23. package/dist/contracts/index.js.map +1 -1
  24. package/dist/contracts/recipes.js +1 -1
  25. package/dist/contracts/recipes.js.map +1 -1
  26. package/dist/contracts/reviews.d.ts +2 -1
  27. package/dist/contracts/reviews.d.ts.map +1 -1
  28. package/dist/contracts/reviews.js.map +1 -1
  29. package/dist/contracts/runs.d.ts +51 -3
  30. package/dist/contracts/runs.d.ts.map +1 -1
  31. package/dist/contracts/runs.js +42 -2
  32. package/dist/contracts/runs.js.map +1 -1
  33. package/dist/contracts/slots.d.ts +11 -0
  34. package/dist/contracts/slots.d.ts.map +1 -1
  35. package/dist/contracts/slots.js +11 -0
  36. package/dist/contracts/slots.js.map +1 -1
  37. package/dist/contracts/work-graph.d.ts +1 -1
  38. package/dist/contracts/work-graph.d.ts.map +1 -1
  39. package/dist/integrations/github-ref.js +1 -1
  40. package/dist/integrations/github-ref.js.map +1 -1
  41. package/dist/recipe/artifact.d.ts.map +1 -1
  42. package/dist/recipe/artifact.js +153 -20
  43. package/dist/recipe/artifact.js.map +1 -1
  44. package/dist/recipe/common.d.ts +30 -36
  45. package/dist/recipe/common.d.ts.map +1 -1
  46. package/dist/recipe/common.js +0 -3
  47. package/dist/recipe/common.js.map +1 -1
  48. package/dist/recipe/digest.d.ts +5 -0
  49. package/dist/recipe/digest.d.ts.map +1 -0
  50. package/dist/recipe/digest.js +25 -0
  51. package/dist/recipe/digest.js.map +1 -0
  52. package/dist/recipe/document.d.ts +4 -20
  53. package/dist/recipe/document.d.ts.map +1 -1
  54. package/dist/recipe/document.js +160 -123
  55. package/dist/recipe/document.js.map +1 -1
  56. package/dist/recipe/index.d.ts +6 -3
  57. package/dist/recipe/index.d.ts.map +1 -1
  58. package/dist/recipe/index.js +6 -3
  59. package/dist/recipe/index.js.map +1 -1
  60. package/dist/recipe/manifest.d.ts +0 -1
  61. package/dist/recipe/manifest.d.ts.map +1 -1
  62. package/dist/recipe/manifest.js +82 -45
  63. package/dist/recipe/manifest.js.map +1 -1
  64. package/dist/recipe/params.d.ts +9 -0
  65. package/dist/recipe/params.d.ts.map +1 -0
  66. package/dist/recipe/params.js +261 -0
  67. package/dist/recipe/params.js.map +1 -0
  68. package/dist/recipe/trust.d.ts +47 -0
  69. package/dist/recipe/trust.d.ts.map +1 -0
  70. package/dist/recipe/trust.js +63 -0
  71. package/dist/recipe/trust.js.map +1 -0
  72. package/dist/recipe/workflow.d.ts +13 -27
  73. package/dist/recipe/workflow.d.ts.map +1 -1
  74. package/dist/recipe/workflow.js +201 -497
  75. package/dist/recipe/workflow.js.map +1 -1
  76. package/dist/rpc/dispatch.d.ts +9 -1
  77. package/dist/rpc/dispatch.d.ts.map +1 -1
  78. package/dist/rpc/registry.d.ts +5 -0
  79. package/dist/rpc/registry.d.ts.map +1 -1
  80. package/dist/rpc/registry.js +5 -0
  81. package/dist/rpc/registry.js.map +1 -1
  82. package/dist/rpc/run.d.ts +11 -1
  83. package/dist/rpc/run.d.ts.map +1 -1
  84. package/dist/rpc/slot.d.ts +53 -1
  85. package/dist/rpc/slot.d.ts.map +1 -1
  86. package/dist/rpc/slot.js +5 -0
  87. package/dist/rpc/slot.js.map +1 -1
  88. package/dist/rpc/tmux.d.ts +1 -1
  89. package/dist/rpc/tmux.d.ts.map +1 -1
  90. package/dist/runs/family-iteration-ledger.js +2 -2
  91. package/dist/runs/family-iteration-ledger.js.map +1 -1
  92. package/dist/runs/run-mode.d.ts +1 -1
  93. package/dist/runs/run-mode.js +2 -2
  94. package/dist/runs/run-mode.js.map +1 -1
  95. package/dist/transport/events.d.ts +2 -0
  96. package/dist/transport/events.d.ts.map +1 -1
  97. package/dist/version.d.ts +1 -1
  98. package/dist/version.d.ts.map +1 -1
  99. package/dist/version.js +1 -1
  100. package/dist/version.js.map +1 -1
  101. package/package.json +1 -1
  102. package/schemas/recipe-v1.schema.json +119 -197
@@ -0,0 +1,63 @@
1
+ export const RECIPE_EXECUTION_CAPABILITIES = [
2
+ 'host-exec',
3
+ 'host-read-export',
4
+ 'app-mutation',
5
+ 'external-mutation',
6
+ 'arbitrary-code',
7
+ ];
8
+ export const DEFAULT_UNTRUSTED_RECIPE_BLOCKED_CAPABILITIES = [
9
+ 'host-exec',
10
+ 'host-read-export',
11
+ 'app-mutation',
12
+ 'external-mutation',
13
+ 'arbitrary-code',
14
+ ];
15
+ const HOST_READ_EXPORT_ACTIONS = new Set([
16
+ 'assert_file',
17
+ 'assert_json',
18
+ 'state_read',
19
+ 'watch_logs',
20
+ 'ui.screenshot',
21
+ 'ui.wait_for',
22
+ 'app.status',
23
+ 'app.trace',
24
+ 'cdp.target',
25
+ 'cdp.storage',
26
+ 'cdp.network',
27
+ 'cdp.metrics',
28
+ 'cdp.trace',
29
+ ]);
30
+ const APP_MUTATION_ACTIONS = new Set([
31
+ 'ui.navigate',
32
+ 'ui.press',
33
+ 'ui.key_press',
34
+ 'ui.set_input',
35
+ 'ui.scroll',
36
+ 'ui.gesture',
37
+ 'app.lifecycle',
38
+ 'app.hud',
39
+ 'cdp.storage',
40
+ 'cdp.network',
41
+ 'cdp.emulation',
42
+ ]);
43
+ const EXTERNAL_MUTATION_ACTIONS = new Set([
44
+ 'ui.press',
45
+ 'ui.key_press',
46
+ 'ui.gesture',
47
+ 'cdp.network',
48
+ ]);
49
+ export function officialRecipeActionCapabilities(action) {
50
+ if (action === 'command')
51
+ return ['host-exec'];
52
+ if (action === 'index_artifacts')
53
+ return ['host-read-export'];
54
+ const capabilities = [];
55
+ if (HOST_READ_EXPORT_ACTIONS.has(action))
56
+ capabilities.push('host-read-export');
57
+ if (APP_MUTATION_ACTIONS.has(action))
58
+ capabilities.push('app-mutation');
59
+ if (EXTERNAL_MUTATION_ACTIONS.has(action))
60
+ capabilities.push('external-mutation');
61
+ return capabilities;
62
+ }
63
+ //# sourceMappingURL=trust.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/recipe/trust.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,WAAW;IACX,kBAAkB;IAClB,cAAc;IACd,mBAAmB;IACnB,gBAAgB;CACR,CAAC;AAwDX,MAAM,CAAC,MAAM,6CAA6C,GAAG;IAC3D,WAAW;IACX,kBAAkB;IAClB,cAAc;IACd,mBAAmB;IACnB,gBAAgB;CACuC,CAAC;AAE1D,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAqB;IAC3D,aAAa;IACb,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,aAAa;IACb,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,aAAa;IACb,aAAa;IACb,aAAa;IACb,WAAW;CACZ,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAqB;IACvD,aAAa;IACb,UAAU;IACV,cAAc;IACd,cAAc;IACd,WAAW;IACX,YAAY;IACZ,eAAe;IACf,SAAS;IACT,aAAa;IACb,aAAa;IACb,eAAe;CAChB,CAAC,CAAC;AAEH,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAqB;IAC5D,UAAU;IACV,cAAc;IACd,YAAY;IACZ,aAAa;CACd,CAAC,CAAC;AAEH,MAAM,UAAU,gCAAgC,CAC9C,MAA0B;IAE1B,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,MAAM,KAAK,iBAAiB;QAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAgC,EAAE,CAAC;IACrD,IAAI,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChF,IAAI,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxE,IAAI,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAClF,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -1,40 +1,26 @@
1
1
  import { type MutableValidationContext } from './common.js';
2
- interface WorkflowGraph {
2
+ export interface WorkflowGraph {
3
3
  entry: string;
4
4
  nodes: Record<string, Record<string, unknown>>;
5
- lifecycleNodes: Record<string, LifecycleWorkflowNode>;
5
+ teardown?: string;
6
6
  }
7
- interface LifecycleWorkflowNode {
7
+ export interface WorkflowActionEntry {
8
+ nodeId: string;
9
+ action: string;
8
10
  node: Record<string, unknown>;
9
11
  path: string;
10
12
  }
11
- interface RecipePreconditionGate {
12
- id: string;
13
- path: string;
14
- }
13
+ export declare function normalizeRecipeRef(value: string): string;
14
+ export declare function isDynamicRecipeRef(value: string): boolean;
15
+ export declare function getRecipeActionParams(node: Record<string, unknown>): Record<string, unknown>;
15
16
  export declare function extractWorkflow(ctx: MutableValidationContext, recipe: Record<string, unknown>): WorkflowGraph | null;
16
- export declare function validateWorkflowGraph(ctx: MutableValidationContext, workflow: WorkflowGraph, rawWorkflow: Record<string, unknown>): void;
17
+ export declare function validateWorkflowGraph(ctx: MutableValidationContext, workflow: WorkflowGraph): void;
17
18
  export declare function getRecipeWorkflowNodeIds(recipe: unknown): string[];
19
+ export declare function getRecipeCallRefs(recipe: unknown): string[];
18
20
  export declare function getRecipeWorkflowActions(recipe: unknown): string[];
19
- export declare function getRecipeWorkflowActionEntries(recipe: unknown): Array<{
20
- nodeId: string;
21
- action: string;
22
- path: string;
23
- }>;
24
- export declare function validateInlineFlows(ctx: MutableValidationContext, recipe: Record<string, unknown>): void;
25
- export declare function validateWorkflowPreconditions(ctx: MutableValidationContext, workflow: Record<string, unknown>): void;
26
- export declare function getRecipeWorkflowPreconditionEntries(recipe: unknown): RecipePreconditionGate[];
27
- export declare function validateFlowCalls(ctx: MutableValidationContext, recipe: Record<string, unknown>, workflow: WorkflowGraph, options?: {
28
- externalFlowIds?: ReadonlySet<string>;
29
- /** Skip `call.ref` resolution (unresolved_call_ref) only; shape checks still run. */
21
+ export declare function getRecipeWorkflowActionEntries(recipe: unknown): WorkflowActionEntry[];
22
+ export declare function validateRecipeCalls(ctx: MutableValidationContext, workflow: WorkflowGraph, options?: {
23
+ externalRecipeIds?: ReadonlySet<string>;
30
24
  skipResolution?: boolean;
31
- /**
32
- * Whether a declared `uses` catalog counts as resolving `call.ref`s. True at
33
- * authoring/run time (catalogs are loaded). False at artifact-package validation,
34
- * where the catalogs are not in the package, so only inline `flows` (or a proven
35
- * resolved-recipe.json) count.
36
- */
37
- externalCatalogsResolvable?: boolean;
38
25
  }): void;
39
- export {};
40
26
  //# sourceMappingURL=workflow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/recipe/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,wBAAwB,EAM9B,MAAM,aAAa,CAAC;AAErB,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CACvD;AAED,UAAU,qBAAqB;IAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,sBAAsB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AA4FD,wBAAgB,eAAe,CAC7B,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,aAAa,GAAG,IAAI,CAkEtB;AAyOD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,IAAI,CAwIN;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAelE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAElE;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,OAAO,GACd,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAoDzD;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,IAAI,CAyKN;AAmCD,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CA0EN;AAED,wBAAgB,oCAAoC,CAAC,MAAM,EAAE,OAAO,GAAG,sBAAsB,EAAE,CAc9F;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE;IACR,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,qFAAqF;IACrF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,GACA,IAAI,CAmDN"}
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/recipe/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,wBAAwB,EAG9B,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAkDD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAS5F;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,aAAa,GAAG,IAAI,CAgFtB;AAgRD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EAAE,aAAa,GACtB,IAAI,CAiEN;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAIlE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAI3D;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAElE;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,OAAO,GAAG,mBAAmB,EAAE,CAOrF;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE;IACR,iBAAiB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GACA,IAAI,CAyBN"}