@relayfile/relay-helpers 0.4.6 → 0.4.8
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 +85 -1
- package/dist/generic.d.ts.map +1 -1
- package/dist/generic.js +16 -11
- package/dist/generic.js.map +1 -1
- package/dist/github.d.ts +4 -12
- package/dist/github.d.ts.map +1 -1
- package/dist/github.js +12 -16
- package/dist/github.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/linear.d.ts +7 -24
- package/dist/linear.d.ts.map +1 -1
- package/dist/linear.js +8 -17
- package/dist/linear.js.map +1 -1
- package/dist/preview-transport.test.js +407 -1
- package/dist/preview-transport.test.js.map +1 -1
- package/dist/receipt.d.ts +48 -6
- package/dist/receipt.d.ts.map +1 -1
- package/dist/receipt.js +98 -7
- package/dist/receipt.js.map +1 -1
- package/dist/receipt.test.d.ts +2 -0
- package/dist/receipt.test.d.ts.map +1 -0
- package/dist/receipt.test.js +301 -0
- package/dist/receipt.test.js.map +1 -0
- package/dist/relay-helpers.test.js +99 -1
- package/dist/relay-helpers.test.js.map +1 -1
- package/dist/transport.d.ts +3 -1
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +2 -0
- package/dist/transport.js.map +1 -1
- package/dist/write-authorizer.d.ts +45 -0
- package/dist/write-authorizer.d.ts.map +1 -0
- package/dist/write-authorizer.js +136 -0
- package/dist/write-authorizer.js.map +1 -0
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -20,6 +20,43 @@ await githubClient().mergePullRequest({ owner, repo, number });
|
|
|
20
20
|
await slackClient().post('#eng', 'shipped');
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
## Create delivery status
|
|
24
|
+
|
|
25
|
+
GitHub and Linear create helpers return a discriminated `CreatedResult` instead
|
|
26
|
+
of making a missing receipt look confirmed:
|
|
27
|
+
|
|
28
|
+
```ts
|
|
29
|
+
const posted = await githubClient().comment({ owner, repo, number }, body);
|
|
30
|
+
|
|
31
|
+
switch (posted.status) {
|
|
32
|
+
case 'confirmed':
|
|
33
|
+
console.log('provider receipt received', posted.id, posted.url);
|
|
34
|
+
break;
|
|
35
|
+
case 'pending':
|
|
36
|
+
// The draft was accepted and may still be delivered. Do not throw/retry:
|
|
37
|
+
// doing so can duplicate the provider-side effect.
|
|
38
|
+
console.log('write accepted; receipt not observed yet', posted.path);
|
|
39
|
+
break;
|
|
40
|
+
case 'dropped':
|
|
41
|
+
console.error('transport confirmed the write was dropped', posted.path);
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
`path` is always the Relayfile draft handle. For compatibility, `id` also
|
|
47
|
+
falls back to that path until a provider receipt supplies an id. `url` is an
|
|
48
|
+
empty string when no provider URL exists; it is never populated with a
|
|
49
|
+
filesystem path. Older custom transports need no changes: a receipt implies
|
|
50
|
+
`confirmed`, while no receipt implies `pending`. A transport should report
|
|
51
|
+
`dropped` only with positive evidence that the draft will not be handled.
|
|
52
|
+
Mount receipt timeouts and direct-HTTP operations that are still running are
|
|
53
|
+
therefore `pending`; a direct operation explicitly reported as failed,
|
|
54
|
+
dead-lettered, or canceled is `dropped`. Ambiguous failures such as an admission
|
|
55
|
+
timeout still throw because the server may have accepted the request before the
|
|
56
|
+
client lost the response—calling that dropped would make an unsafe retry look
|
|
57
|
+
safe. A missing receipt alone can never distinguish pending from an unmounted
|
|
58
|
+
draft, so callers must not promote `pending` to `dropped` themselves.
|
|
59
|
+
|
|
23
60
|
## A named client for every provider
|
|
24
61
|
|
|
25
62
|
Every provider in the catalog has a named client (`asanaClient`, `notionClient`,
|
|
@@ -51,7 +88,7 @@ provider isn't known at author time.
|
|
|
51
88
|
|
|
52
89
|
Inject `PreviewTransport` when a local run must record intended provider
|
|
53
90
|
operations without touching a Relayfile mount or network API. Explicit
|
|
54
|
-
transport injection
|
|
91
|
+
transport injection normally wins over ambient credentials:
|
|
55
92
|
|
|
56
93
|
```ts
|
|
57
94
|
import { PreviewTransport, slackClient } from '@relayfile/relay-helpers';
|
|
@@ -82,3 +119,50 @@ try {
|
|
|
82
119
|
restore();
|
|
83
120
|
}
|
|
84
121
|
```
|
|
122
|
+
|
|
123
|
+
Local runtimes that enforce an immutable write policy can bind a final-write
|
|
124
|
+
authorizer. It runs after explicit/process transport selection, so authored
|
|
125
|
+
`transport` options cannot bypass denial or canonical preview routing:
|
|
126
|
+
|
|
127
|
+
```ts
|
|
128
|
+
import {
|
|
129
|
+
PreviewTransport,
|
|
130
|
+
bindRelayWriteAuthorizer,
|
|
131
|
+
runWithRelayWriteAuthorizer,
|
|
132
|
+
} from '@relayfile/relay-helpers/transport';
|
|
133
|
+
|
|
134
|
+
const canonicalPreview = new PreviewTransport();
|
|
135
|
+
const restoreAuthorization = bindRelayWriteAuthorizer(() => ({
|
|
136
|
+
allowed: true,
|
|
137
|
+
transport: canonicalPreview,
|
|
138
|
+
}));
|
|
139
|
+
try {
|
|
140
|
+
await handler();
|
|
141
|
+
} finally {
|
|
142
|
+
restoreAuthorization();
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Returning `{ allowed: false }` rejects before any selected transport or native
|
|
147
|
+
VFS write. Authorizers compose from outermost to innermost: any denial wins,
|
|
148
|
+
and the first transport override remains authoritative, so Agent code cannot
|
|
149
|
+
relax a runtime denial or redirect its canonical preview. Reads and lists are
|
|
150
|
+
unaffected. Cleanup callbacks are idempotent and safe out of order, but should
|
|
151
|
+
still be restored in `finally`.
|
|
152
|
+
|
|
153
|
+
When one process can host overlapping Runs, use an isolated async scope rather
|
|
154
|
+
than an imperative binding. Bindings created by code inside the operation still
|
|
155
|
+
compose with the outer policy:
|
|
156
|
+
|
|
157
|
+
```ts
|
|
158
|
+
await runWithRelayWriteAuthorizer(
|
|
159
|
+
() => ({ allowed: true, transport: canonicalPreview }),
|
|
160
|
+
async () => {
|
|
161
|
+
await importAndRunAgent();
|
|
162
|
+
},
|
|
163
|
+
);
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
The execution coordinator is shared across installed package copies and its
|
|
167
|
+
global reference cannot be overwritten or deleted. This lets the runtime bind
|
|
168
|
+
before importing authored code without exposing last-writer-wins policy state.
|
package/dist/generic.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic.d.ts","sourceRoot":"","sources":["../src/generic.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,
|
|
1
|
+
{"version":3,"file":"generic.d.ts","sourceRoot":"","sources":["../src/generic.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EAGb,KAAK,eAAe,EACrB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAGxB,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,iBAAiB;IACtD,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrB,yDAAyD;IACzD,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC5E;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7G,oDAAoD;IACpD,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACnF,iDAAiD;IACjD,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;CACtF;AAMD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,iBAAiB,EACrD,QAAQ,EAAE,CAAC,EACX,IAAI,GAAE,kBAAuB,GAC5B,WAAW,CAAC,CAAC,CAAC,CAwEhB;AAED,qFAAqF;AACrF,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,CAAC"}
|
package/dist/generic.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { draftFile, encodeSegment, listJsonFiles, readJsonFile
|
|
1
|
+
import { draftFile, encodeSegment, listJsonFiles, readJsonFile } from '@relayfile/adapter-core/vfs-client';
|
|
2
2
|
import { WRITEBACK_PATH_CATALOG, writebackPath } from '@relayfile/adapter-core/writeback-paths';
|
|
3
3
|
import { createRelayTransportResolver, } from './transport.js';
|
|
4
|
+
import { executeRelayWrite } from './write-authorizer.js';
|
|
4
5
|
function isItemPath(path) {
|
|
5
6
|
return path.endsWith('.json');
|
|
6
7
|
}
|
|
@@ -21,17 +22,21 @@ export function relayClient(provider, opts = {}) {
|
|
|
21
22
|
async write(resource, params, body) {
|
|
22
23
|
const base = writebackPath(provider, resource, params);
|
|
23
24
|
const transport = resolveTransport();
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
});
|
|
32
|
-
}
|
|
25
|
+
const request = {
|
|
26
|
+
provider,
|
|
27
|
+
resource: String(resource),
|
|
28
|
+
parameters: { ...params },
|
|
29
|
+
path: base,
|
|
30
|
+
body,
|
|
31
|
+
};
|
|
33
32
|
const target = isItemPath(base) ? base : `${base}/${draftFile(String(resource))}`;
|
|
34
|
-
return
|
|
33
|
+
return executeRelayWrite(transport, request, {
|
|
34
|
+
options: opts,
|
|
35
|
+
integration: provider,
|
|
36
|
+
operation: `write.${String(resource)}`,
|
|
37
|
+
path: target,
|
|
38
|
+
data: body,
|
|
39
|
+
});
|
|
35
40
|
},
|
|
36
41
|
async read(resource, params = {}) {
|
|
37
42
|
// `async` so a validation/path error rejects the promise rather than
|
package/dist/generic.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic.js","sourceRoot":"","sources":["../src/generic.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,YAAY,
|
|
1
|
+
{"version":3,"file":"generic.js","sourceRoot":"","sources":["../src/generic.ts"],"names":[],"mappings":"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"}
|
package/dist/github.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ProviderClient } from './provider-client.js';
|
|
2
|
+
import { type CreatedResult } from './receipt.js';
|
|
2
3
|
import { type RelayClientOptions } from './transport.js';
|
|
3
4
|
export interface GithubTarget {
|
|
4
5
|
owner: string;
|
|
@@ -7,10 +8,7 @@ export interface GithubTarget {
|
|
|
7
8
|
}
|
|
8
9
|
export interface GithubClient extends ProviderClient<'github'> {
|
|
9
10
|
/** Comment on an issue or pull request. */
|
|
10
|
-
comment(target: GithubTarget, body: string): Promise<
|
|
11
|
-
id: string;
|
|
12
|
-
url: string;
|
|
13
|
-
}>;
|
|
11
|
+
comment(target: GithubTarget, body: string): Promise<CreatedResult>;
|
|
14
12
|
/** Create an issue. */
|
|
15
13
|
createIssue(args: {
|
|
16
14
|
owner: string;
|
|
@@ -18,10 +16,7 @@ export interface GithubClient extends ProviderClient<'github'> {
|
|
|
18
16
|
title: string;
|
|
19
17
|
body: string;
|
|
20
18
|
labels?: string[];
|
|
21
|
-
}): Promise<
|
|
22
|
-
id: string;
|
|
23
|
-
url: string;
|
|
24
|
-
}>;
|
|
19
|
+
}): Promise<CreatedResult>;
|
|
25
20
|
/** Create a pull request from a branch already present on GitHub. */
|
|
26
21
|
createPullRequest(args: {
|
|
27
22
|
owner: string;
|
|
@@ -32,10 +27,7 @@ export interface GithubClient extends ProviderClient<'github'> {
|
|
|
32
27
|
body?: string;
|
|
33
28
|
draft?: boolean;
|
|
34
29
|
author?: 'app' | 'user';
|
|
35
|
-
}): Promise<
|
|
36
|
-
id: string;
|
|
37
|
-
url: string;
|
|
38
|
-
}>;
|
|
30
|
+
}): Promise<CreatedResult>;
|
|
39
31
|
/** Create a Git ref through a non-canonical draft. */
|
|
40
32
|
pushRef(args: {
|
|
41
33
|
owner: string;
|
package/dist/github.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"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"}
|
package/dist/github.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { encodeSegment
|
|
1
|
+
import { encodeSegment } from '@relayfile/adapter-core/vfs-client';
|
|
2
2
|
import { providerClient } from './provider-client.js';
|
|
3
3
|
import { created } from './receipt.js';
|
|
4
4
|
import { createRelayTransportResolver, } from './transport.js';
|
|
5
|
+
import { executeRelayWrite } from './write-authorizer.js';
|
|
5
6
|
/**
|
|
6
7
|
* Ergonomic GitHub client over the writeback-path catalog, plus the uniform
|
|
7
8
|
* resource-keyed access (`.issues`, `.["issue-comments"]`, `.merge`, `.reviews`).
|
|
@@ -11,13 +12,13 @@ export function githubClient(opts = {}) {
|
|
|
11
12
|
const resolveTransport = createRelayTransportResolver(opts);
|
|
12
13
|
return Object.assign(base, {
|
|
13
14
|
async comment(target, body) {
|
|
14
|
-
return created(
|
|
15
|
+
return created(base['issue-comments'].write({ owner: target.owner, repo: target.repo, issueNumber: target.number }, { body }));
|
|
15
16
|
},
|
|
16
17
|
async createIssue(args) {
|
|
17
|
-
return created(
|
|
18
|
+
return created(base.issues.write({ owner: args.owner, repo: args.repo }, { title: args.title, body: args.body, ...(args.labels ? { labels: args.labels } : {}) }));
|
|
18
19
|
},
|
|
19
20
|
async createPullRequest(args) {
|
|
20
|
-
return created(
|
|
21
|
+
return created(base['pull-requests'].write({ owner: args.owner, repo: args.repo }, {
|
|
21
22
|
title: args.title,
|
|
22
23
|
head: args.head,
|
|
23
24
|
base: args.base,
|
|
@@ -42,18 +43,13 @@ export function githubClient(opts = {}) {
|
|
|
42
43
|
...(args.force !== undefined ? { force: args.force } : {})
|
|
43
44
|
};
|
|
44
45
|
const transport = resolveTransport();
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
await writeJsonFile(opts, 'github', 'write.refs', path, body);
|
|
56
|
-
}
|
|
46
|
+
await executeRelayWrite(transport, {
|
|
47
|
+
provider: 'github',
|
|
48
|
+
resource: 'refs',
|
|
49
|
+
parameters: { owner: args.owner, repo: args.repo, ref: normalizedRef },
|
|
50
|
+
path,
|
|
51
|
+
body,
|
|
52
|
+
}, { options: opts, integration: 'github', operation: 'write.refs', path, data: body });
|
|
57
53
|
},
|
|
58
54
|
async closePullRequest(target) {
|
|
59
55
|
await base['close-pull-request'].write({ owner: target.owner, repo: target.repo, pullNumber: target.number }, {});
|
package/dist/github.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
*/
|
|
23
23
|
export { relayClient, encodeSegment, type RelayClient, type RelayParams } from './generic.js';
|
|
24
24
|
export { providerClient, type ProviderClient, type ResourceClient } from './provider-client.js';
|
|
25
|
-
export { created } from './receipt.js';
|
|
26
|
-
export { PreviewTransport, bindPreviewTransport, bindRelayTransport, clearPreviewTransport, createRelayTransportResolver, getProcessRelayTransport, setPreviewTransport, setProcessRelayTransport, type PreviewTransportOptions, type RelayClientOptions, type RelayTransport, type RelayTransportParameters, type RelayTransportRequest, type RelayTransportWriteRequest, } from './transport.js';
|
|
25
|
+
export { created, type CreatedConfirmed, type CreatedDropped, type CreatedPending, type CreatedResult, } from './receipt.js';
|
|
26
|
+
export { PreviewTransport, RelayWriteAuthorizationError, bindRelayWriteAuthorizer, runWithRelayWriteAuthorizer, bindPreviewTransport, bindRelayTransport, clearPreviewTransport, createRelayTransportResolver, getProcessRelayTransport, setPreviewTransport, setProcessRelayTransport, type PreviewTransportOptions, type RelayClientOptions, type RelayTransport, type RelayTransportParameters, type RelayTransportRequest, type RelayTransportWriteRequest, type RelayWriteAuthorizationDecision, type RelayWriteAuthorizer, } from './transport.js';
|
|
27
27
|
export type { EffectPolicyV1, PreviewAccess, PreviewAction, PreviewParameters, PreviewSimulatedReceipt, TransportPreviewAction, } from './types.js';
|
|
28
28
|
export { linearClient, type LinearClient, type LinearCreateIssueArgs } from './linear.js';
|
|
29
29
|
export { githubClient, type GithubClient, type GithubTarget } from './github.js';
|
|
@@ -31,5 +31,5 @@ export { slackClient, type SlackClient } from './slack.js';
|
|
|
31
31
|
export { redditClient } from './reddit.js';
|
|
32
32
|
export { telegramClient, telegramReceiptMessageId, telegramReceiptTs, type TelegramChatId, type TelegramClient, type TelegramEditMessageOptions, type TelegramMessageId, type TelegramMessageResult, type TelegramParseMode, type TelegramReactionResult, type TelegramSendMessageOptions, } from './telegram.js';
|
|
33
33
|
export * from './generated/clients.js';
|
|
34
|
-
export type { IntegrationClientOptions, WritebackResult } from '@relayfile/adapter-core/vfs-client';
|
|
34
|
+
export type { IntegrationClientOptions, WritebackDeliveryStatus, WritebackResult, } from '@relayfile/adapter-core/vfs-client';
|
|
35
35
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EACL,OAAO,EACP,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,EAChB,4BAA4B,EAC5B,wBAAwB,EACxB,2BAA2B,EAC3B,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,4BAA4B,EAC5B,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,+BAA+B,EACpC,KAAK,oBAAoB,GAC1B,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,GAChC,MAAM,eAAe,CAAC;AAKvB,cAAc,wBAAwB,CAAC;AAEvC,YAAY,EACV,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,GAChB,MAAM,oCAAoC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
*/
|
|
23
23
|
export { relayClient, encodeSegment } from './generic.js';
|
|
24
24
|
export { providerClient } from './provider-client.js';
|
|
25
|
-
export { created } from './receipt.js';
|
|
26
|
-
export { PreviewTransport, bindPreviewTransport, bindRelayTransport, clearPreviewTransport, createRelayTransportResolver, getProcessRelayTransport, setPreviewTransport, setProcessRelayTransport, } from './transport.js';
|
|
25
|
+
export { created, } from './receipt.js';
|
|
26
|
+
export { PreviewTransport, RelayWriteAuthorizationError, bindRelayWriteAuthorizer, runWithRelayWriteAuthorizer, bindPreviewTransport, bindRelayTransport, clearPreviewTransport, createRelayTransportResolver, getProcessRelayTransport, setPreviewTransport, setProcessRelayTransport, } from './transport.js';
|
|
27
27
|
// Ergonomic clients (resource-keyed access + named methods).
|
|
28
28
|
export { linearClient } from './linear.js';
|
|
29
29
|
export { githubClient } from './github.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAsC,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,cAAc,EAA4C,MAAM,sBAAsB,CAAC;AAChG,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAsC,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,cAAc,EAA4C,MAAM,sBAAsB,CAAC;AAChG,OAAO,EACL,OAAO,GAKR,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,EAChB,4BAA4B,EAC5B,wBAAwB,EACxB,2BAA2B,EAC3B,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,4BAA4B,EAC5B,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,GASzB,MAAM,gBAAgB,CAAC;AAUxB,6DAA6D;AAC7D,OAAO,EAAE,YAAY,EAAiD,MAAM,aAAa,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAwC,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,WAAW,EAAoB,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,iBAAiB,GASlB,MAAM,eAAe,CAAC;AAEvB,mEAAmE;AACnE,mEAAmE;AACnE,4EAA4E;AAC5E,cAAc,wBAAwB,CAAC"}
|
package/dist/linear.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ProviderClient } from './provider-client.js';
|
|
2
|
+
import { type CreatedResult } from './receipt.js';
|
|
2
3
|
import type { LinearAgentActivity } from '@relayfile/adapter-linear/types';
|
|
3
4
|
import { type RelayClientOptions } from './transport.js';
|
|
4
5
|
export interface LinearCreateIssueArgs {
|
|
@@ -30,37 +31,19 @@ export interface LinearCreateLabelArgs {
|
|
|
30
31
|
export type LinearUpdateLabelArgs = Partial<Pick<LinearCreateLabelArgs, 'name' | 'description' | 'color' | 'parentId'>>;
|
|
31
32
|
export interface LinearClient extends ProviderClient<'linear'> {
|
|
32
33
|
/** Post an activity to a Linear Agent Session. */
|
|
33
|
-
agentActivity(sessionId: string, activity: LinearAgentActivity): Promise<
|
|
34
|
-
id: string;
|
|
35
|
-
url: string;
|
|
36
|
-
}>;
|
|
34
|
+
agentActivity(sessionId: string, activity: LinearAgentActivity): Promise<CreatedResult>;
|
|
37
35
|
/** Send a response activity to a Linear Agent Session. */
|
|
38
|
-
respond(sessionId: string, body: string): Promise<
|
|
39
|
-
id: string;
|
|
40
|
-
url: string;
|
|
41
|
-
}>;
|
|
36
|
+
respond(sessionId: string, body: string): Promise<CreatedResult>;
|
|
42
37
|
/** Send a quick thought activity so Linear knows the agent is working. */
|
|
43
|
-
acknowledge(sessionId: string): Promise<
|
|
44
|
-
id: string;
|
|
45
|
-
url: string;
|
|
46
|
-
}>;
|
|
38
|
+
acknowledge(sessionId: string): Promise<CreatedResult>;
|
|
47
39
|
/** Comment on an issue. */
|
|
48
|
-
comment(issueId: string, body: string): Promise<
|
|
49
|
-
id: string;
|
|
50
|
-
url: string;
|
|
51
|
-
}>;
|
|
40
|
+
comment(issueId: string, body: string): Promise<CreatedResult>;
|
|
52
41
|
/** Create an issue. */
|
|
53
|
-
createIssue(args: LinearCreateIssueArgs): Promise<
|
|
54
|
-
id: string;
|
|
55
|
-
url: string;
|
|
56
|
-
}>;
|
|
42
|
+
createIssue(args: LinearCreateIssueArgs): Promise<CreatedResult>;
|
|
57
43
|
/** Patch an existing issue. */
|
|
58
44
|
updateIssue(issueId: string, args: LinearUpdateIssueArgs): Promise<void>;
|
|
59
45
|
/** Create a label. */
|
|
60
|
-
createLabel(args: LinearCreateLabelArgs): Promise<
|
|
61
|
-
id: string;
|
|
62
|
-
url: string;
|
|
63
|
-
}>;
|
|
46
|
+
createLabel(args: LinearCreateLabelArgs): Promise<CreatedResult>;
|
|
64
47
|
/** Patch an existing label. */
|
|
65
48
|
updateLabel(labelId: string, args: LinearUpdateLabelArgs): Promise<void>;
|
|
66
49
|
/** Read one issue by id. */
|
package/dist/linear.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../src/linear.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../src/linear.ts"],"names":[],"mappings":"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"}
|
package/dist/linear.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { readJsonFile
|
|
1
|
+
import { readJsonFile } from '@relayfile/adapter-core/vfs-client';
|
|
2
2
|
import { linearByUuidAliasPath } from '@relayfile/adapter-linear/path-mapper';
|
|
3
3
|
import { encodeSegment } from './generic.js';
|
|
4
4
|
import { providerClient } from './provider-client.js';
|
|
5
5
|
import { created } from './receipt.js';
|
|
6
6
|
import { createRelayTransportResolver, } from './transport.js';
|
|
7
|
+
import { executeRelayWrite } from './write-authorizer.js';
|
|
7
8
|
/**
|
|
8
9
|
* Ergonomic Linear client over the writeback-path catalog. Recovers the
|
|
9
10
|
* `ctx.linear.comment(...)` shape removed from the runtime, plus the uniform
|
|
@@ -17,7 +18,7 @@ export function linearClient(opts = {}) {
|
|
|
17
18
|
// Read lookup follows the adapter's stable UUID alias. Writeback keeps the
|
|
18
19
|
// canonical issue item path until its contract is separately proven.
|
|
19
20
|
const issueUuidPath = (issueId) => linearByUuidAliasPath(base.issues.path(), issueId);
|
|
20
|
-
const agentActivity = async (sessionId, activity) => created(
|
|
21
|
+
const agentActivity = async (sessionId, activity) => created(base['agent-activities'].write({ sessionId }, activity));
|
|
21
22
|
return Object.assign(base, {
|
|
22
23
|
agentActivity,
|
|
23
24
|
async respond(sessionId, body) {
|
|
@@ -27,33 +28,23 @@ export function linearClient(opts = {}) {
|
|
|
27
28
|
return agentActivity(sessionId, { type: 'thought', body: 'Acknowledged.' });
|
|
28
29
|
},
|
|
29
30
|
async comment(issueId, body) {
|
|
30
|
-
return created(
|
|
31
|
+
return created(base.comments.write({ issueId }, { body }));
|
|
31
32
|
},
|
|
32
33
|
async createIssue(args) {
|
|
33
|
-
return created(
|
|
34
|
+
return created(base.issues.write({}, args));
|
|
34
35
|
},
|
|
35
36
|
async updateIssue(issueId, args) {
|
|
36
37
|
const path = issuePath(issueId);
|
|
37
38
|
const transport = resolveTransport();
|
|
38
|
-
|
|
39
|
-
await transport.write({ provider: 'linear', resource: 'issues', parameters: { issueId }, path, body: args });
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
await writeJsonFile(opts, 'linear', 'updateIssue', path, args);
|
|
43
|
-
}
|
|
39
|
+
await executeRelayWrite(transport, { provider: 'linear', resource: 'issues', parameters: { issueId }, path, body: args }, { options: opts, integration: 'linear', operation: 'updateIssue', path, data: args });
|
|
44
40
|
},
|
|
45
41
|
async createLabel(args) {
|
|
46
|
-
return created(
|
|
42
|
+
return created(base.labels.write({}, args));
|
|
47
43
|
},
|
|
48
44
|
async updateLabel(labelId, args) {
|
|
49
45
|
const path = labelPath(labelId);
|
|
50
46
|
const transport = resolveTransport();
|
|
51
|
-
|
|
52
|
-
await transport.write({ provider: 'linear', resource: 'labels', parameters: { labelId }, path, body: args });
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
await writeJsonFile(opts, 'linear', 'updateLabel', path, args);
|
|
56
|
-
}
|
|
47
|
+
await executeRelayWrite(transport, { provider: 'linear', resource: 'labels', parameters: { labelId }, path, body: args }, { options: opts, integration: 'linear', operation: 'updateLabel', path, data: args });
|
|
57
48
|
},
|
|
58
49
|
getIssue(issueId) {
|
|
59
50
|
const path = issueUuidPath(issueId);
|
package/dist/linear.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear.js","sourceRoot":"","sources":["../src/linear.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"linear.js","sourceRoot":"","sources":["../src/linear.ts"],"names":[],"mappings":"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"}
|