@agent-relay/factory 0.1.57 → 0.1.58
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.
- package/README.md +139 -1
- package/dist/cli/fleet.d.ts +13 -0
- package/dist/cli/fleet.d.ts.map +1 -1
- package/dist/cli/fleet.js +431 -103
- package/dist/cli/fleet.js.map +1 -1
- package/dist/config/schema.d.ts +1107 -348
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +67 -6
- package/dist/config/schema.js.map +1 -1
- package/dist/feature-guardian/conversation.d.ts +251 -0
- package/dist/feature-guardian/conversation.d.ts.map +1 -0
- package/dist/feature-guardian/conversation.js +1893 -0
- package/dist/feature-guardian/conversation.js.map +1 -0
- package/dist/feature-guardian/index.d.ts +2 -0
- package/dist/feature-guardian/index.d.ts.map +1 -0
- package/dist/feature-guardian/index.js +2 -0
- package/dist/feature-guardian/index.js.map +1 -0
- package/dist/github/index.d.ts +2 -0
- package/dist/github/index.d.ts.map +1 -1
- package/dist/github/index.js +1 -0
- package/dist/github/index.js.map +1 -1
- package/dist/github/routed-pr-babysitter.d.ts +48 -0
- package/dist/github/routed-pr-babysitter.d.ts.map +1 -0
- package/dist/github/routed-pr-babysitter.js +197 -0
- package/dist/github/routed-pr-babysitter.js.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/intake/index.d.ts +4 -0
- package/dist/intake/index.d.ts.map +1 -0
- package/dist/intake/index.js +4 -0
- package/dist/intake/index.js.map +1 -0
- package/dist/intake/notion-relay-claim.d.ts +32 -0
- package/dist/intake/notion-relay-claim.d.ts.map +1 -0
- package/dist/intake/notion-relay-claim.js +173 -0
- package/dist/intake/notion-relay-claim.js.map +1 -0
- package/dist/intake/notion-relay-contract.d.ts +33 -0
- package/dist/intake/notion-relay-contract.d.ts.map +1 -0
- package/dist/intake/notion-relay-contract.js +163 -0
- package/dist/intake/notion-relay-contract.js.map +1 -0
- package/dist/intake/notion.d.ts +375 -0
- package/dist/intake/notion.d.ts.map +1 -0
- package/dist/intake/notion.js +773 -0
- package/dist/intake/notion.js.map +1 -0
- package/dist/mount/github-api-issue-read.d.ts +28 -0
- package/dist/mount/github-api-issue-read.d.ts.map +1 -0
- package/dist/mount/github-api-issue-read.js +163 -0
- package/dist/mount/github-api-issue-read.js.map +1 -0
- package/dist/mount/local-mount-preflight.d.ts +2 -0
- package/dist/mount/local-mount-preflight.d.ts.map +1 -1
- package/dist/mount/local-mount-preflight.js +59 -9
- package/dist/mount/local-mount-preflight.js.map +1 -1
- package/dist/mount/mount-auth-error.d.ts +41 -0
- package/dist/mount/mount-auth-error.d.ts.map +1 -0
- package/dist/mount/mount-auth-error.js +94 -0
- package/dist/mount/mount-auth-error.js.map +1 -0
- package/dist/mount/relayfile-binary.d.ts +5 -0
- package/dist/mount/relayfile-binary.d.ts.map +1 -1
- package/dist/mount/relayfile-binary.js +16 -2
- package/dist/mount/relayfile-binary.js.map +1 -1
- package/dist/mount/relayfile-cloud-mount-client.d.ts +18 -3
- package/dist/mount/relayfile-cloud-mount-client.d.ts.map +1 -1
- package/dist/mount/relayfile-cloud-mount-client.js +157 -13
- package/dist/mount/relayfile-cloud-mount-client.js.map +1 -1
- package/dist/mount/workspace-mirror.d.ts +13 -0
- package/dist/mount/workspace-mirror.d.ts.map +1 -0
- package/dist/mount/workspace-mirror.js +94 -0
- package/dist/mount/workspace-mirror.js.map +1 -0
- package/dist/observability/events.d.ts +32 -32
- package/dist/orchestrator/factory.d.ts +51 -0
- package/dist/orchestrator/factory.d.ts.map +1 -1
- package/dist/orchestrator/factory.js +263 -17
- package/dist/orchestrator/factory.js.map +1 -1
- package/dist/ports/index.d.ts +1 -1
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/mount.d.ts +58 -1
- package/dist/ports/mount.d.ts.map +1 -1
- package/dist/ports/state.d.ts +21 -0
- package/dist/ports/state.d.ts.map +1 -1
- package/dist/state/file-state-store.d.ts +10 -1
- package/dist/state/file-state-store.d.ts.map +1 -1
- package/dist/state/file-state-store.js +91 -0
- package/dist/state/file-state-store.js.map +1 -1
- package/dist/state/in-memory-state-store.d.ts +10 -1
- package/dist/state/in-memory-state-store.d.ts.map +1 -1
- package/dist/state/in-memory-state-store.js +43 -0
- package/dist/state/in-memory-state-store.js.map +1 -1
- package/dist/testing/fakes.d.ts +4 -0
- package/dist/testing/fakes.d.ts.map +1 -1
- package/dist/testing/fakes.js +6 -0
- package/dist/testing/fakes.js.map +1 -1
- package/dist/triage/schema.d.ts +133 -0
- package/dist/triage/schema.d.ts.map +1 -1
- package/dist/triage/schema.js +19 -0
- package/dist/triage/schema.js.map +1 -1
- package/dist/types.d.ts +30 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/writeback/github.d.ts.map +1 -1
- package/dist/writeback/github.js +39 -0
- package/dist/writeback/github.js.map +1 -1
- package/package.json +10 -1
package/README.md
CHANGED
|
@@ -141,6 +141,7 @@ After init, add the `factory` label to an open issue and run a dry run below.
|
|
|
141
141
|
| `factory babysit <PR\|PR-URL>` | Spawn a one-shot babysitter for an existing open PR, even when it was not created by Factory. |
|
|
142
142
|
| `factory canary <KEY\|path>` | Assert a known "Ready for Agent" issue is dispatch-ready by the real dry-run triage path. Prints `{ok,issue,status,reason}`; exits non-zero (with the skip reason) if it isn't. |
|
|
143
143
|
| `factory featuremap check [--manifest <path>] [--base <ref>]` | Validate the repository feature/test manifest and optionally report advisory drift for unchanged entries whose locations changed. |
|
|
144
|
+
| `factory intake notion <manifest>` | Normalize ready specs from a read-only Notion mount into GitHub lifecycle issues or exact-path fleet work. Honors `--dry-run`. |
|
|
144
145
|
|
|
145
146
|
Global options work anywhere in the args: `--config <path>`, `--dry-run`,
|
|
146
147
|
`--backend <internal|relay>`, and `--agent-exit-timeout <ms>`. The internal
|
|
@@ -160,6 +161,106 @@ instruction to rerun the Factory command in an interactive terminal instead.
|
|
|
160
161
|
(There are a few more operational commands — `loop-status`, `kill-loop`,
|
|
161
162
|
`reap-orphans`, `close-probe` — for running the daemon in production.)
|
|
162
163
|
|
|
164
|
+
### Mounted Notion specs
|
|
165
|
+
|
|
166
|
+
Notion is an intake source, not a lifecycle issue source or writeback surface.
|
|
167
|
+
Factory reads a Relayfile-mounted page, binds it to a stable
|
|
168
|
+
`notion:<page-id>` identity and digest, then either creates a labeled GitHub
|
|
169
|
+
issue for a repository target or dispatches an exact-path workspace task
|
|
170
|
+
through the fleet. The config field `issueSource` continues to select the
|
|
171
|
+
discovery and lifecycle-writeback adapter (`linear` or `github`); Notion intake
|
|
172
|
+
normalizes into that lifecycle instead of becoming a third adapter.
|
|
173
|
+
|
|
174
|
+
The absence of Notion writeback is deliberate. Relayfile supplies the mounted
|
|
175
|
+
page as a read-only execution contract, and Factory has no guarded Notion
|
|
176
|
+
property/comment writeback adapter or operator-defined lifecycle mapping.
|
|
177
|
+
Repository targets reconcile accepted, dispatched, PR, blocked, and completed
|
|
178
|
+
state on their generated GitHub issue. Native Notion lifecycle reconciliation
|
|
179
|
+
requires a separate provider capability and product contract.
|
|
180
|
+
|
|
181
|
+
New pages fail closed unless the first block is an explicit ready spec:
|
|
182
|
+
|
|
183
|
+
```markdown
|
|
184
|
+
# Chief Spec
|
|
185
|
+
Status: ready
|
|
186
|
+
Title: Reconcile the mail integration
|
|
187
|
+
Summary: Resume the reviewed recovery procedure and preserve every gate.
|
|
188
|
+
Recipe: team
|
|
189
|
+
Repos: AgentWorkforce/cloud
|
|
190
|
+
|
|
191
|
+
The full private execution contract starts here.
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Supported destinations are `Repos: owner/name, ...` and
|
|
195
|
+
`Project-Paths: /absolute/path, ...`; `Node:` can pin exact-path work to a fleet
|
|
196
|
+
node. `Recipe:` is `single`, `workflow`, or `team`. For a public repository the
|
|
197
|
+
header must also contain a reviewed `Public-Summary:`. Factory never copies the
|
|
198
|
+
mounted body into a public issue.
|
|
199
|
+
|
|
200
|
+
The intake manifest identifies pages and the local mount root. Headerless legacy
|
|
201
|
+
pages can be admitted only with a bootstrap entry containing the exact
|
|
202
|
+
`authorizedPageId`, destination, safe summary, and operator reason. That escape
|
|
203
|
+
hatch is deliberately page-specific; there is no title or content heuristic.
|
|
204
|
+
|
|
205
|
+
```json
|
|
206
|
+
{
|
|
207
|
+
"version": 1,
|
|
208
|
+
"mountRoot": ".integrations/notion",
|
|
209
|
+
"workerMountRoot": ".integrations/notion",
|
|
210
|
+
"workerMountTransport": { "kind": "relay-channel" },
|
|
211
|
+
"statePath": ".factory/notion-intake-state.json",
|
|
212
|
+
"tasks": [
|
|
213
|
+
{ "page": "https://app.notion.com/p/Reconcile-3b36800c1c90801db1cfc8f2e1cff7cf" }
|
|
214
|
+
]
|
|
215
|
+
}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
`mountRoot` and `statePath` resolve relative to the manifest file. `statePath`
|
|
219
|
+
is a local receipt cache, not the dispatch authority: before creating an issue
|
|
220
|
+
or spawning an agent, Factory creates one immutable, digest-bound claim in the
|
|
221
|
+
active Agent Relay workspace. Workspace-global claim-channel uniqueness stops
|
|
222
|
+
two machines with independent caches from dispatching the same source key. A
|
|
223
|
+
failed or ambiguous claim write blocks dispatch. All non-dry-run Notion intake
|
|
224
|
+
therefore requires a resolvable active Agent Relay workspace key.
|
|
225
|
+
|
|
226
|
+
`workerMountRoot` is the repo-relative read-only mount workers receive. With the recommended
|
|
227
|
+
`relay-channel` transport, Factory base64-chunks the digest-bound mounted bytes
|
|
228
|
+
into a workspace-private Agent Relay channel. A worker on any fleet machine can
|
|
229
|
+
reconstruct the exact file at `workerMountRoot`, set it to mode `0444`, and
|
|
230
|
+
apply the source SHA-256 gate without exposing the page in a public issue.
|
|
231
|
+
`workerMountTransport` defaults to `{ "kind": "local" }` whenever it is
|
|
232
|
+
omitted, including in new manifests. Portable delivery must be selected
|
|
233
|
+
explicitly; otherwise the worker uses the local mount path. Missing portable
|
|
234
|
+
delivery or claim capability fails closed.
|
|
235
|
+
|
|
236
|
+
If dispatch stops after creating the durable claim but before recording its
|
|
237
|
+
receipt, re-running stays blocked rather than guessing whether the downstream
|
|
238
|
+
side effect happened. The blocked result includes the source key. A workspace
|
|
239
|
+
administrator can derive the claim channel as
|
|
240
|
+
`factory-notion-claim-<sha256(sourceKey)>`. After verifying that no matching
|
|
241
|
+
lifecycle issue or workspace agent exists, the administrator may delete that
|
|
242
|
+
channel in Agent Relay and re-run intake. Never clear a claim merely because
|
|
243
|
+
its local receipt is missing: the shared claim, issue marker, and running agent
|
|
244
|
+
must be reconciled first. A blocked portable-mount migration uses the same
|
|
245
|
+
channel formula with `<sourceKey>:portable-mount` as the hashed value; verify
|
|
246
|
+
the worker was not redispatched before clearing it.
|
|
247
|
+
`page` accepts a Notion URL or a bare page ID.
|
|
248
|
+
|
|
249
|
+
Plan without writes, then dispatch:
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
factory intake notion ./ops/notion-intake.json --dry-run
|
|
253
|
+
factory intake notion ./ops/notion-intake.json --backend relay
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
Repository targets require the `factory-ready` and matching
|
|
257
|
+
`agent:<recipe>` labels to already exist. Factory automatically prefixes their
|
|
258
|
+
issue titles with `[factory]` so the hosted brain's independent safety gate can
|
|
259
|
+
accept them. Re-running reconciles the workspace-global claim with the GitHub
|
|
260
|
+
source marker or the running exact-path agent; the local digest-bound receipt is
|
|
261
|
+
only a cache. A changed mounted spec blocks instead of silently mutating
|
|
262
|
+
already-dispatched work.
|
|
263
|
+
|
|
163
264
|
### Feature-map validation
|
|
164
265
|
|
|
165
266
|
Repositories with `.agentworkforce/features/manifest.yaml` can run
|
|
@@ -231,6 +332,37 @@ existing PR branch, and always leaves the final review and merge to a human.
|
|
|
231
332
|
The command prints a spawn receipt and returns; the PR-keyed task-exit worker
|
|
232
333
|
continues on the relay broker and reports completion or access blockers there.
|
|
233
334
|
|
|
335
|
+
### Routed-PR discovery (activation disabled)
|
|
336
|
+
|
|
337
|
+
This release adds the declarative configuration and read-only discovery surface
|
|
338
|
+
for widening babysitter intake beyond Factory-created PRs. To configure that
|
|
339
|
+
discovery surface, set:
|
|
340
|
+
|
|
341
|
+
```json
|
|
342
|
+
{
|
|
343
|
+
"babysitter": {
|
|
344
|
+
"enabled": true,
|
|
345
|
+
"mode": "routed-open-prs",
|
|
346
|
+
"excludeLabels": ["factory:skip-babysitter"],
|
|
347
|
+
"excludePullRequests": [],
|
|
348
|
+
"notifyHumans": false
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
Discovery scans only repositories named by `repos.names`; other routing
|
|
354
|
+
fallbacks do not silently expand it. It classifies open, non-draft,
|
|
355
|
+
same-repository PRs, applies `excludeLabels` and `excludePullRequests`,
|
|
356
|
+
deduplicates mount aliases, and reports incomplete or unreadable metadata.
|
|
357
|
+
|
|
358
|
+
**Routed-PR activation is deliberately disabled.** The named
|
|
359
|
+
`ROUTED_PR_BABYSITTER_ACTIVATION_ENABLED` guard is `false`, and configuration
|
|
360
|
+
cannot turn it on. No routed candidate is claimed, spawned, renewed, released,
|
|
361
|
+
interpreted as complete, advanced to Human Review, or used to notify anyone.
|
|
362
|
+
Activation will be implemented separately after the durable lifecycle and
|
|
363
|
+
completion-CAS design is reviewed. The existing issue-created babysitter path
|
|
364
|
+
is unchanged.
|
|
365
|
+
|
|
234
366
|
### Scheduled sync-fidelity canary
|
|
235
367
|
|
|
236
368
|
`factory canary` is the regression detector for upstream sync drift: if a synced
|
|
@@ -466,7 +598,13 @@ Tokens involved — set only the first one on the orchestrator host:
|
|
|
466
598
|
|
|
467
599
|
## Configuration
|
|
468
600
|
|
|
469
|
-
|
|
601
|
+
Factory resolves exactly one contract: the path passed via `--config`, or
|
|
602
|
+
`./factory.config.json` in the command's current working directory when the
|
|
603
|
+
flag is omitted. It does not search target repositories, walk to a clone root,
|
|
604
|
+
or merge multiple configs; a config in another repository is inert unless it
|
|
605
|
+
is selected explicitly.
|
|
606
|
+
|
|
607
|
+
Beyond the two required fields above, useful
|
|
470
608
|
knobs include issue **routing** (`repos.byLabel` / `byProject` / `keywordRules` /
|
|
471
609
|
`default`), the **safety gate** (`safety.requireTitlePrefix`, `safety.requireTeamKey`),
|
|
472
610
|
`mergePolicy` (defaults to `never`), per-role **model** overrides, and an optional
|
package/dist/cli/fleet.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { type LocalClonePathOptions } from '../config/local-clone-paths.js';
|
|
|
3
3
|
import { createFactory, createFleet, ensureRelayBroker, reapFactoryEnvironmentsOnce, type Capability, type Factory, type FactoryEventReporter, type FactoryConfig, type FleetBackend, type FleetClient, type GhRunner, type FactoryStateResolution, type LocalMountOptions, type MountClient, type ProbeCloser, type RelayfileCloudMountClientConfig, type ResolvedFactoryWorkspace } from '../index.js';
|
|
4
4
|
import { type CheckFeatureMapOptions, type FeatureMapCheckReport } from '../featuremap/index.js';
|
|
5
5
|
import type { FactoryIntegrationProvider } from '../ports/index.js';
|
|
6
|
+
import { type NotionIntakeClaimStore, type NotionContractPublisher } from '../intake/index.js';
|
|
6
7
|
interface FleetCliDeps {
|
|
7
8
|
fleet?: FleetClient;
|
|
8
9
|
/** Hermetic credential environment for the relay backend (tests). */
|
|
@@ -33,6 +34,10 @@ interface FleetCliDeps {
|
|
|
33
34
|
confirmIntegrationConnect?: (provider: FactoryIntegrationProvider) => Promise<boolean>;
|
|
34
35
|
openIntegrationUrl?: (url: string) => void | Promise<void>;
|
|
35
36
|
featureMapCheck?: (options?: CheckFeatureMapOptions) => Promise<FeatureMapCheckReport>;
|
|
37
|
+
/** Hermetic portable Notion contract publisher for intake tests and alternate runtimes. */
|
|
38
|
+
notionContracts?: NotionContractPublisher;
|
|
39
|
+
/** Hermetic workspace-global Notion claim store for tests and alternate runtimes. */
|
|
40
|
+
notionClaims?: NotionIntakeClaimStore;
|
|
36
41
|
/** Hermetic verification-environment sweep for CLI tests and alternate runtimes. */
|
|
37
42
|
reapEnvironments?: typeof reapFactoryEnvironmentsOnce;
|
|
38
43
|
}
|
|
@@ -94,6 +99,9 @@ type ParsedCommand = {
|
|
|
94
99
|
kind: 'factory-init';
|
|
95
100
|
repo?: string;
|
|
96
101
|
workspaceId?: string;
|
|
102
|
+
} | {
|
|
103
|
+
kind: 'notion-intake';
|
|
104
|
+
manifestPath: string;
|
|
97
105
|
};
|
|
98
106
|
export declare function runFleetCli(argv: string[], deps?: FleetCliDeps): Promise<number>;
|
|
99
107
|
export declare function parseFleetCommand(args: string[]): ParsedCommand;
|
|
@@ -103,6 +111,11 @@ export declare function parseGlobalOptions(argv: string[]): {
|
|
|
103
111
|
};
|
|
104
112
|
export declare function formatLogArgs(args: unknown[]): string;
|
|
105
113
|
export declare function resolveBrokerConnectionPath(startCwd?: string, env?: NodeJS.ProcessEnv): string | undefined;
|
|
114
|
+
export type GithubIssueSelector = {
|
|
115
|
+
number: number;
|
|
116
|
+
repo?: string;
|
|
117
|
+
};
|
|
118
|
+
export declare function parseGithubIssueSelector(key: string, config: FactoryConfig): GithubIssueSelector;
|
|
106
119
|
export declare function installFactoryStopSignalHandlers(factory: Factory, opts?: {
|
|
107
120
|
exit?: (code: number) => void;
|
|
108
121
|
processLike?: Pick<NodeJS.Process, 'once' | 'off'>;
|
package/dist/cli/fleet.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fleet.d.ts","sourceRoot":"","sources":["../../src/cli/fleet.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAG1E,OAAO,EAA6B,KAAK,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAEnG,OAAO,EAKL,aAAa,EACb,WAAW,EAEX,iBAAiB,EAgBjB,2BAA2B,EAO3B,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAElB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,sBAAsB,EAG3B,KAAK,iBAAiB,EACtB,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"fleet.d.ts","sourceRoot":"","sources":["../../src/cli/fleet.ts"],"names":[],"mappings":"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"}
|