taskflow-core 0.2.9 → 0.3.0-beta.1

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 (130) hide show
  1. package/README.md +139 -355
  2. package/dist/agents.d.ts.map +1 -1
  3. package/dist/agents.js +3 -10
  4. package/dist/agents.js.map +1 -1
  5. package/dist/atomic-rename.d.ts +14 -0
  6. package/dist/atomic-rename.d.ts.map +1 -0
  7. package/dist/atomic-rename.js +35 -0
  8. package/dist/atomic-rename.js.map +1 -0
  9. package/dist/build-info.json +2 -2
  10. package/dist/detached-runner.js +4 -1
  11. package/dist/detached-runner.js.map +1 -1
  12. package/dist/discovery-boundary.d.ts +20 -0
  13. package/dist/discovery-boundary.d.ts.map +1 -0
  14. package/dist/discovery-boundary.js +101 -0
  15. package/dist/discovery-boundary.js.map +1 -0
  16. package/dist/effects/index.d.ts +9 -0
  17. package/dist/effects/index.d.ts.map +1 -0
  18. package/dist/effects/index.js +9 -0
  19. package/dist/effects/index.js.map +1 -0
  20. package/dist/effects/runtime-apply.d.ts +66 -0
  21. package/dist/effects/runtime-apply.d.ts.map +1 -0
  22. package/dist/effects/runtime-apply.js +214 -0
  23. package/dist/effects/runtime-apply.js.map +1 -0
  24. package/dist/effects/schema.d.ts +8 -0
  25. package/dist/effects/schema.d.ts.map +1 -0
  26. package/dist/effects/schema.js +41 -0
  27. package/dist/effects/schema.js.map +1 -0
  28. package/dist/effects/types.d.ts +93 -0
  29. package/dist/effects/types.d.ts.map +1 -0
  30. package/dist/effects/types.js +37 -0
  31. package/dist/effects/types.js.map +1 -0
  32. package/dist/effects/validate.d.ts +103 -0
  33. package/dist/effects/validate.d.ts.map +1 -0
  34. package/dist/effects/validate.js +543 -0
  35. package/dist/effects/validate.js.map +1 -0
  36. package/dist/effects/why.d.ts +94 -0
  37. package/dist/effects/why.d.ts.map +1 -0
  38. package/dist/effects/why.js +365 -0
  39. package/dist/effects/why.js.map +1 -0
  40. package/dist/exec/driver.d.ts +6 -0
  41. package/dist/exec/driver.d.ts.map +1 -1
  42. package/dist/exec/driver.js +3 -0
  43. package/dist/exec/driver.js.map +1 -1
  44. package/dist/exec/kernel-policy.d.ts.map +1 -1
  45. package/dist/exec/kernel-policy.js +4 -0
  46. package/dist/exec/kernel-policy.js.map +1 -1
  47. package/dist/exec/step-kinds.d.ts.map +1 -1
  48. package/dist/exec/step-kinds.js +10 -3
  49. package/dist/exec/step-kinds.js.map +1 -1
  50. package/dist/exec/step.d.ts +8 -0
  51. package/dist/exec/step.d.ts.map +1 -1
  52. package/dist/exec/step.js +23 -2
  53. package/dist/exec/step.js.map +1 -1
  54. package/dist/flowir/canonical-hash.d.ts.map +1 -1
  55. package/dist/flowir/canonical-hash.js +6 -2
  56. package/dist/flowir/canonical-hash.js.map +1 -1
  57. package/dist/flowir/compile.d.ts.map +1 -1
  58. package/dist/flowir/compile.js +42 -2
  59. package/dist/flowir/compile.js.map +1 -1
  60. package/dist/flowir/index.js +1 -1
  61. package/dist/flowir/index.js.map +1 -1
  62. package/dist/flowir/meta.d.ts +6 -0
  63. package/dist/flowir/meta.d.ts.map +1 -1
  64. package/dist/flowir/phasefp.d.ts.map +1 -1
  65. package/dist/flowir/phasefp.js +1 -0
  66. package/dist/flowir/phasefp.js.map +1 -1
  67. package/dist/flowir/schema.d.ts +9 -0
  68. package/dist/flowir/schema.d.ts.map +1 -1
  69. package/dist/flowir/schema.js +8 -0
  70. package/dist/flowir/schema.js.map +1 -1
  71. package/dist/flowir/translate.d.ts.map +1 -1
  72. package/dist/flowir/translate.js +32 -0
  73. package/dist/flowir/translate.js.map +1 -1
  74. package/dist/index.d.ts +1 -0
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +2 -0
  77. package/dist/index.js.map +1 -1
  78. package/dist/library/search.d.ts.map +1 -1
  79. package/dist/library/search.js +2 -2
  80. package/dist/library/search.js.map +1 -1
  81. package/dist/resources/execution.d.ts +9 -0
  82. package/dist/resources/execution.d.ts.map +1 -1
  83. package/dist/resources/execution.js +80 -0
  84. package/dist/resources/execution.js.map +1 -1
  85. package/dist/resources/file-transaction.d.ts +105 -0
  86. package/dist/resources/file-transaction.d.ts.map +1 -0
  87. package/dist/resources/file-transaction.js +781 -0
  88. package/dist/resources/file-transaction.js.map +1 -0
  89. package/dist/resources/journal.d.ts +39 -4
  90. package/dist/resources/journal.d.ts.map +1 -1
  91. package/dist/resources/journal.js +140 -11
  92. package/dist/resources/journal.js.map +1 -1
  93. package/dist/resources/types.d.ts +4 -0
  94. package/dist/resources/types.d.ts.map +1 -1
  95. package/dist/resources/types.js.map +1 -1
  96. package/dist/resume.d.ts.map +1 -1
  97. package/dist/resume.js +2 -0
  98. package/dist/resume.js.map +1 -1
  99. package/dist/runtime/phases/script.d.ts +19 -0
  100. package/dist/runtime/phases/script.d.ts.map +1 -1
  101. package/dist/runtime/phases/script.js +31 -1
  102. package/dist/runtime/phases/script.js.map +1 -1
  103. package/dist/runtime.d.ts +14 -3
  104. package/dist/runtime.d.ts.map +1 -1
  105. package/dist/runtime.js +256 -29
  106. package/dist/runtime.js.map +1 -1
  107. package/dist/schema.d.ts +19 -0
  108. package/dist/schema.d.ts.map +1 -1
  109. package/dist/schema.js +34 -0
  110. package/dist/schema.js.map +1 -1
  111. package/dist/store.d.ts +21 -14
  112. package/dist/store.d.ts.map +1 -1
  113. package/dist/store.js +589 -113
  114. package/dist/store.js.map +1 -1
  115. package/dist/verifiers/discover.d.ts.map +1 -1
  116. package/dist/verifiers/discover.js +1 -17
  117. package/dist/verifiers/discover.js.map +1 -1
  118. package/dist/verifiers/effects-lint.d.ts +33 -0
  119. package/dist/verifiers/effects-lint.d.ts.map +1 -0
  120. package/dist/verifiers/effects-lint.js +77 -0
  121. package/dist/verifiers/effects-lint.js.map +1 -0
  122. package/dist/verifiers/index.d.ts +1 -0
  123. package/dist/verifiers/index.d.ts.map +1 -1
  124. package/dist/verifiers/index.js +3 -1
  125. package/dist/verifiers/index.js.map +1 -1
  126. package/dist/verify.d.ts +7 -1
  127. package/dist/verify.d.ts.map +1 -1
  128. package/dist/verify.js +3 -0
  129. package/dist/verify.js.map +1 -1
  130. package/package.json +1 -1
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Resource-controlled file mutation transaction.
3
+ *
4
+ * This module is deliberately internal to `resources/execution.ts`: callers
5
+ * receive transactions only after host authority and PathRef resolution. It
6
+ * owns the data-plane sequence beneath that boundary:
7
+ *
8
+ * durable snapshots -> atomic multi-scope lease -> durable intent/permit
9
+ * -> stage -> promote -> commit-content | restore + abort-restored
10
+ *
11
+ * The local backend provides taskflow-exclusive isolation. It does not claim
12
+ * hostile external-process fencing; concurrent Taskflow writers are excluded
13
+ * by the persistent lease and unexpected external changes fail closed.
14
+ */
15
+ import type { ResolvedPathRef } from "./resolve.ts";
16
+ import type { WriteIntentJournal, PreparedMutation, WriteIntentRecord } from "./journal.ts";
17
+ import type { LeaseHandle, PersistentLeaseCoordinator } from "./leases.ts";
18
+ import type { ExecutionOwner, ScopedContentEvidence } from "./types.ts";
19
+ export interface ResolvedFileWriteTarget {
20
+ effectId: string;
21
+ ref: ResolvedPathRef;
22
+ }
23
+ export interface FileWritePayload {
24
+ effectId: string;
25
+ content: string | Buffer;
26
+ }
27
+ export type FileTransactionResult = {
28
+ ok: true;
29
+ intentId: string;
30
+ committedPaths: string[];
31
+ commitGeneration: number;
32
+ } | {
33
+ ok: false;
34
+ intentId: string;
35
+ code: "declared-path-bypass" | "commit-rejected";
36
+ reason: string;
37
+ restored: true;
38
+ };
39
+ interface SnapshotManifest {
40
+ version: 1;
41
+ artifactId: string;
42
+ effectId: string;
43
+ physicalPath: string;
44
+ logicalSubpath: string;
45
+ exists: boolean;
46
+ contentId: string;
47
+ mode?: number;
48
+ nearestExistingAncestor: string;
49
+ blobPath?: string;
50
+ }
51
+ interface Snapshot extends SnapshotManifest {
52
+ capabilityBindingId: string;
53
+ scopeDigest: string;
54
+ }
55
+ export interface ResourceFileTransactionOptions {
56
+ controlDirectory: string;
57
+ resourceDomainId: string;
58
+ owner: ExecutionOwner;
59
+ targets: readonly ResolvedFileWriteTarget[];
60
+ leases: PersistentLeaseCoordinator;
61
+ journal: WriteIntentJournal;
62
+ leaseTimeoutMs: number;
63
+ permitTtlMs: number;
64
+ signal?: AbortSignal;
65
+ authorizationPrincipalId?: string;
66
+ authorizationScopeRoot: string;
67
+ /** Preserve a failed authenticated release for the session's next-admission drain. */
68
+ onDeferredLeaseRelease?: (lease: LeaseHandle) => void;
69
+ /** Internal fault-injection seam for post-terminal staging cleanup tests. */
70
+ cleanupStaging?: (stagingDirectory: string) => void;
71
+ }
72
+ /** Remove terminal and pre-intent orphan before-images while retaining any
73
+ * pending/dirty transaction needed for recovery or explicit reconciliation. */
74
+ export declare function garbageCollectResourceFileTransactions(controlDirectory: string, intents: readonly WriteIntentRecord[]): void;
75
+ /** Restore a stale content intent while journal recovery holds its mutex. */
76
+ export declare function recoverResourceFileIntent(options: {
77
+ controlDirectory: string;
78
+ intent: WriteIntentRecord;
79
+ leases: PersistentLeaseCoordinator;
80
+ leaseTimeoutMs: number;
81
+ signal?: AbortSignal;
82
+ }): Promise<{
83
+ scopes: ScopedContentEvidence[];
84
+ reason: string;
85
+ restorableSnapshotArtifactIds: string[];
86
+ } | undefined>;
87
+ export declare class PreparedResourceFileTransaction {
88
+ #private;
89
+ readonly intentId: string;
90
+ constructor(input: {
91
+ snapshots: readonly Snapshot[];
92
+ mutation: PreparedMutation;
93
+ lease: LeaseHandle;
94
+ journal: WriteIntentJournal;
95
+ stagingDirectory: string;
96
+ onDeferredLeaseRelease?: (lease: LeaseHandle) => void;
97
+ authorizationScopeRoot: string;
98
+ cleanupStaging?: (stagingDirectory: string) => void;
99
+ });
100
+ commit(payloads: readonly FileWritePayload[]): Promise<FileTransactionResult>;
101
+ reject(reason: string): Promise<FileTransactionResult>;
102
+ }
103
+ export declare function prepareResourceFileTransaction(options: ResourceFileTransactionOptions): Promise<PreparedResourceFileTransaction>;
104
+ export {};
105
+ //# sourceMappingURL=file-transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-transaction.d.ts","sourceRoot":"","sources":["../../src/resources/file-transaction.ts"],"names":[],"mappings":"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"}