@ixo/flow-work 0.3.0 → 0.4.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.
- package/README.md +135 -9
- package/dist/capability.d.ts +21 -10
- package/dist/capability.d.ts.map +1 -1
- package/dist/capability.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/input-requests.d.ts +65 -0
- package/dist/input-requests.d.ts.map +1 -0
- package/dist/input-requests.js +397 -0
- package/dist/input-requests.js.map +1 -0
- package/dist/input.d.ts +199 -0
- package/dist/input.d.ts.map +1 -0
- package/dist/input.js +198 -0
- package/dist/input.js.map +1 -0
- package/dist/listener.d.ts +28 -0
- package/dist/listener.d.ts.map +1 -1
- package/dist/listener.js +105 -4
- package/dist/listener.js.map +1 -1
- package/dist/matrix-port.d.ts +21 -3
- package/dist/matrix-port.d.ts.map +1 -1
- package/dist/matrix-port.js +47 -1
- package/dist/matrix-port.js.map +1 -1
- package/dist/protocol.d.ts +1 -0
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +1 -1
- package/dist/protocol.js.map +1 -1
- package/package.json +6 -2
package/dist/input.js
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** Interactive-input sub-protocol v1 wire constants and schemas. */
|
|
3
|
+
export const FLOW_WORK_INPUT_REQUEST_EVENT = 'ixo.flow.work.input.request';
|
|
4
|
+
export const FLOW_WORK_INPUT_RESPONSE_EVENT = 'ixo.flow.work.input.response';
|
|
5
|
+
export const FLOW_WORK_INPUT_INDEX_EVENT = 'ixo.flow.work.input.index';
|
|
6
|
+
export const FLOW_WORK_INPUT_RESPONSE_REL_TYPE = 'm.reference';
|
|
7
|
+
export const FLOW_WORK_INPUT_PROTOCOL_VERSION = 1;
|
|
8
|
+
const nonEmpty = z.string().trim().min(1);
|
|
9
|
+
const sha256Hex = z.string().regex(/^sha256:[0-9a-f]{64}$/);
|
|
10
|
+
const requestKeySchema = z
|
|
11
|
+
.string()
|
|
12
|
+
.min(1)
|
|
13
|
+
.max(128)
|
|
14
|
+
.refine((value) => value === value.trim(), 'requestKey must not have leading or trailing whitespace');
|
|
15
|
+
export const FLOW_WORK_INPUT_TEMPLATES = [
|
|
16
|
+
'approval',
|
|
17
|
+
'select',
|
|
18
|
+
'entity-select',
|
|
19
|
+
'entity-protocol-select',
|
|
20
|
+
'suggestion',
|
|
21
|
+
'text',
|
|
22
|
+
];
|
|
23
|
+
export const flowWorkInputTargetSchema = z
|
|
24
|
+
.object({
|
|
25
|
+
matrixUserId: nonEmpty.optional(),
|
|
26
|
+
did: nonEmpty.optional(),
|
|
27
|
+
})
|
|
28
|
+
.strict()
|
|
29
|
+
.refine((value) => value.matrixUserId !== undefined || value.did !== undefined, 'target requires a matrixUserId or a did');
|
|
30
|
+
export const flowWorkSelectOptionSchema = z
|
|
31
|
+
.object({
|
|
32
|
+
id: nonEmpty,
|
|
33
|
+
label: nonEmpty,
|
|
34
|
+
description: nonEmpty.optional(),
|
|
35
|
+
})
|
|
36
|
+
.strict();
|
|
37
|
+
export const flowWorkEntityOptionSchema = z
|
|
38
|
+
.object({
|
|
39
|
+
id: nonEmpty,
|
|
40
|
+
label: nonEmpty,
|
|
41
|
+
})
|
|
42
|
+
.strict();
|
|
43
|
+
const requestShape = {
|
|
44
|
+
protocolVersion: z.literal(1),
|
|
45
|
+
requestKey: requestKeySchema,
|
|
46
|
+
invocationId: nonEmpty.optional(),
|
|
47
|
+
target: flowWorkInputTargetSchema.optional(),
|
|
48
|
+
deadline: z.number().int().positive().optional(),
|
|
49
|
+
title: nonEmpty.optional(),
|
|
50
|
+
prompt: nonEmpty,
|
|
51
|
+
};
|
|
52
|
+
export const flowWorkInputRequestSchema = z.discriminatedUnion('template', [
|
|
53
|
+
z
|
|
54
|
+
.object({
|
|
55
|
+
...requestShape,
|
|
56
|
+
template: z.literal('approval'),
|
|
57
|
+
approveLabel: nonEmpty.optional(),
|
|
58
|
+
rejectLabel: nonEmpty.optional(),
|
|
59
|
+
})
|
|
60
|
+
.strict(),
|
|
61
|
+
z
|
|
62
|
+
.object({
|
|
63
|
+
...requestShape,
|
|
64
|
+
template: z.literal('select'),
|
|
65
|
+
options: z.array(flowWorkSelectOptionSchema).min(1).max(50),
|
|
66
|
+
})
|
|
67
|
+
.strict(),
|
|
68
|
+
z
|
|
69
|
+
.object({
|
|
70
|
+
...requestShape,
|
|
71
|
+
template: z.literal('entity-select'),
|
|
72
|
+
options: z.array(flowWorkEntityOptionSchema).min(1).max(50),
|
|
73
|
+
})
|
|
74
|
+
.strict(),
|
|
75
|
+
// Options are resolved by the RENDERING CLIENT, not the sender: the Portal
|
|
76
|
+
// fetches the entity's linked claim protocols with the viewing user's own
|
|
77
|
+
// credentials (getEntityClaimProtocols) — the orchestrator has no access to
|
|
78
|
+
// entity-room state and only names the entity to fetch for.
|
|
79
|
+
z
|
|
80
|
+
.object({
|
|
81
|
+
...requestShape,
|
|
82
|
+
template: z.literal('entity-protocol-select'),
|
|
83
|
+
entityDid: nonEmpty,
|
|
84
|
+
})
|
|
85
|
+
.strict(),
|
|
86
|
+
// Informational only — no response template exists. The card surfaces a
|
|
87
|
+
// discovered oracle the human MAY act on by their own means (e.g. copy the
|
|
88
|
+
// address into a grant); nothing is started and nothing awaits an answer.
|
|
89
|
+
z
|
|
90
|
+
.object({
|
|
91
|
+
...requestShape,
|
|
92
|
+
template: z.literal('suggestion'),
|
|
93
|
+
suggestion: z
|
|
94
|
+
.object({
|
|
95
|
+
kind: nonEmpty,
|
|
96
|
+
name: nonEmpty,
|
|
97
|
+
did: nonEmpty,
|
|
98
|
+
address: nonEmpty.optional(),
|
|
99
|
+
matrixUserId: nonEmpty.optional(),
|
|
100
|
+
capability: nonEmpty,
|
|
101
|
+
})
|
|
102
|
+
.strict(),
|
|
103
|
+
})
|
|
104
|
+
.strict(),
|
|
105
|
+
z
|
|
106
|
+
.object({
|
|
107
|
+
...requestShape,
|
|
108
|
+
template: z.literal('text'),
|
|
109
|
+
placeholder: nonEmpty.optional(),
|
|
110
|
+
minLength: z.number().int().min(0).optional(),
|
|
111
|
+
maxLength: z.number().int().min(1).optional(),
|
|
112
|
+
pattern: nonEmpty.optional(),
|
|
113
|
+
multiline: z.boolean().optional(),
|
|
114
|
+
})
|
|
115
|
+
.strict(),
|
|
116
|
+
]);
|
|
117
|
+
export const flowWorkInputRelatesToSchema = z
|
|
118
|
+
.object({
|
|
119
|
+
rel_type: z.literal('m.reference'),
|
|
120
|
+
event_id: nonEmpty,
|
|
121
|
+
})
|
|
122
|
+
.strict();
|
|
123
|
+
const responseShape = {
|
|
124
|
+
protocolVersion: z.literal(1),
|
|
125
|
+
requestKey: requestKeySchema,
|
|
126
|
+
invocationId: nonEmpty.optional(),
|
|
127
|
+
'm.relates_to': flowWorkInputRelatesToSchema,
|
|
128
|
+
};
|
|
129
|
+
/** Response readers intentionally strip unknown fields for version tolerance. */
|
|
130
|
+
export const flowWorkInputResponseSchema = z.discriminatedUnion('template', [
|
|
131
|
+
z.object({
|
|
132
|
+
...responseShape,
|
|
133
|
+
template: z.literal('approval'),
|
|
134
|
+
approved: z.boolean(),
|
|
135
|
+
}),
|
|
136
|
+
z.object({
|
|
137
|
+
...responseShape,
|
|
138
|
+
template: z.literal('select'),
|
|
139
|
+
optionId: nonEmpty,
|
|
140
|
+
}),
|
|
141
|
+
z.object({
|
|
142
|
+
...responseShape,
|
|
143
|
+
template: z.literal('entity-select'),
|
|
144
|
+
entityId: nonEmpty,
|
|
145
|
+
}),
|
|
146
|
+
z.object({
|
|
147
|
+
...responseShape,
|
|
148
|
+
template: z.literal('entity-protocol-select'),
|
|
149
|
+
/** The selected protocol DID (the option id the client resolved). */
|
|
150
|
+
optionId: nonEmpty,
|
|
151
|
+
}),
|
|
152
|
+
z.object({
|
|
153
|
+
...responseShape,
|
|
154
|
+
template: z.literal('text'),
|
|
155
|
+
text: z
|
|
156
|
+
.string()
|
|
157
|
+
.refine((value) => value.trim().length > 0, 'text must not be blank'),
|
|
158
|
+
}),
|
|
159
|
+
]);
|
|
160
|
+
export const flowWorkInputIndexSchema = z
|
|
161
|
+
.object({
|
|
162
|
+
protocolVersion: z.literal(1),
|
|
163
|
+
requestEventId: nonEmpty,
|
|
164
|
+
requestKey: requestKeySchema,
|
|
165
|
+
invocationId: nonEmpty,
|
|
166
|
+
nodeId: nonEmpty,
|
|
167
|
+
attempt: z.number().int().min(1),
|
|
168
|
+
inputHash: sha256Hex,
|
|
169
|
+
contentHash: sha256Hex,
|
|
170
|
+
deadline: z.number().int().positive(),
|
|
171
|
+
})
|
|
172
|
+
.strict();
|
|
173
|
+
export function parseInputRequest(content) {
|
|
174
|
+
return flowWorkInputRequestSchema.safeParse(content);
|
|
175
|
+
}
|
|
176
|
+
export function parseInputResponse(content) {
|
|
177
|
+
return flowWorkInputResponseSchema.safeParse(content);
|
|
178
|
+
}
|
|
179
|
+
export function inputRequestIdentity(roomId, sender, requestKey) {
|
|
180
|
+
return `${roomId}\u0000${sender}\u0000${requestKey}`;
|
|
181
|
+
}
|
|
182
|
+
export function responseAnswersRequest(response, request, requestEventId) {
|
|
183
|
+
if (response['m.relates_to'].event_id !== requestEventId)
|
|
184
|
+
return false;
|
|
185
|
+
if (response.requestKey !== request.requestKey)
|
|
186
|
+
return false;
|
|
187
|
+
if (response.template !== request.template)
|
|
188
|
+
return false;
|
|
189
|
+
if (request.template === 'select' && response.template === 'select') {
|
|
190
|
+
return request.options.some((option) => option.id === response.optionId);
|
|
191
|
+
}
|
|
192
|
+
if (request.template === 'entity-select' &&
|
|
193
|
+
response.template === 'entity-select') {
|
|
194
|
+
return request.options.some((option) => option.id === response.entityId);
|
|
195
|
+
}
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,oEAAoE;AACpE,MAAM,CAAC,MAAM,6BAA6B,GAAG,6BAA6B,CAAC;AAC3E,MAAM,CAAC,MAAM,8BAA8B,GAAG,8BAA8B,CAAC;AAC7E,MAAM,CAAC,MAAM,2BAA2B,GAAG,2BAA2B,CAAC;AACvE,MAAM,CAAC,MAAM,iCAAiC,GAAG,aAAa,CAAC;AAC/D,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAElD,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1C,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;AAC5D,MAAM,gBAAgB,GAAG,CAAC;KACvB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,GAAG,CAAC;KACR,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,EACjC,yDAAyD,CAC1D,CAAC;AAEJ,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,UAAU;IACV,QAAQ;IACR,eAAe;IACf,wBAAwB;IACxB,YAAY;IACZ,MAAM;CACE,CAAC;AAGX,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,YAAY,EAAE,QAAQ,CAAC,QAAQ,EAAE;IACjC,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE;CACzB,CAAC;KACD,MAAM,EAAE;KACR,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EACtE,yCAAyC,CAC1C,CAAC;AAGJ,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC;KACxC,MAAM,CAAC;IACN,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,QAAQ;IACf,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,MAAM,EAAE,CAAC;AAGZ,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC;KACxC,MAAM,CAAC;IACN,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,QAAQ;CAChB,CAAC;KACD,MAAM,EAAE,CAAC;AAGZ,MAAM,YAAY,GAAG;IACnB,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7B,UAAU,EAAE,gBAAgB;IAC5B,YAAY,EAAE,QAAQ,CAAC,QAAQ,EAAE;IACjC,MAAM,EAAE,yBAAyB,CAAC,QAAQ,EAAE;IAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAChD,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE;IAC1B,MAAM,EAAE,QAAQ;CACR,CAAC;AAEX,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,kBAAkB,CAAC,UAAU,EAAE;IACzE,CAAC;SACE,MAAM,CAAC;QACN,GAAG,YAAY;QACf,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QAC/B,YAAY,EAAE,QAAQ,CAAC,QAAQ,EAAE;QACjC,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE;KACjC,CAAC;SACD,MAAM,EAAE;IACX,CAAC;SACE,MAAM,CAAC;QACN,GAAG,YAAY;QACf,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC7B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;KAC5D,CAAC;SACD,MAAM,EAAE;IACX,CAAC;SACE,MAAM,CAAC;QACN,GAAG,YAAY;QACf,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;QACpC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;KAC5D,CAAC;SACD,MAAM,EAAE;IACX,2EAA2E;IAC3E,0EAA0E;IAC1E,4EAA4E;IAC5E,4DAA4D;IAC5D,CAAC;SACE,MAAM,CAAC;QACN,GAAG,YAAY;QACf,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC;QAC7C,SAAS,EAAE,QAAQ;KACpB,CAAC;SACD,MAAM,EAAE;IACX,wEAAwE;IACxE,2EAA2E;IAC3E,0EAA0E;IAC1E,CAAC;SACE,MAAM,CAAC;QACN,GAAG,YAAY;QACf,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;QACjC,UAAU,EAAE,CAAC;aACV,MAAM,CAAC;YACN,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,QAAQ;YACb,OAAO,EAAE,QAAQ,CAAC,QAAQ,EAAE;YAC5B,YAAY,EAAE,QAAQ,CAAC,QAAQ,EAAE;YACjC,UAAU,EAAE,QAAQ;SACrB,CAAC;aACD,MAAM,EAAE;KACZ,CAAC;SACD,MAAM,EAAE;IACX,CAAC;SACE,MAAM,CAAC;QACN,GAAG,YAAY;QACf,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QAC3B,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE;QAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC7C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC7C,OAAO,EAAE,QAAQ,CAAC,QAAQ,EAAE;QAC5B,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KAClC,CAAC;SACD,MAAM,EAAE;CACZ,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC;KAC1C,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IAClC,QAAQ,EAAE,QAAQ;CACnB,CAAC;KACD,MAAM,EAAE,CAAC;AAKZ,MAAM,aAAa,GAAG;IACpB,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7B,UAAU,EAAE,gBAAgB;IAC5B,YAAY,EAAE,QAAQ,CAAC,QAAQ,EAAE;IACjC,cAAc,EAAE,4BAA4B;CACpC,CAAC;AAEX,iFAAiF;AACjF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,kBAAkB,CAAC,UAAU,EAAE;IAC1E,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,aAAa;QAChB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QAC/B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;KACtB,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,aAAa;QAChB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC7B,QAAQ,EAAE,QAAQ;KACnB,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,aAAa;QAChB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;QACpC,QAAQ,EAAE,QAAQ;KACnB,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,aAAa;QAChB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC;QAC7C,qEAAqE;QACrE,QAAQ,EAAE,QAAQ;KACnB,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,aAAa;QAChB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QAC3B,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,wBAAwB,CAAC;KACxE,CAAC;CACH,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC;IACN,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7B,cAAc,EAAE,QAAQ;IACxB,UAAU,EAAE,gBAAgB;IAC5B,YAAY,EAAE,QAAQ;IACtB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,SAAS;IACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACtC,CAAC;KACD,MAAM,EAAE,CAAC;AAGZ,MAAM,UAAU,iBAAiB,CAC/B,OAAgB;IAEhB,OAAO,0BAA0B,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAgB;IAEhB,OAAO,2BAA2B,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAc,EACd,MAAc,EACd,UAAkB;IAElB,OAAO,GAAG,MAAM,SAAS,MAAM,SAAS,UAAU,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAA+B,EAC/B,OAA6B,EAC7B,cAAsB;IAEtB,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,QAAQ,KAAK,cAAc;QAAE,OAAO,KAAK,CAAC;IACvE,IAAI,QAAQ,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAC7D,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACzD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACpE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3E,CAAC;IACD,IACE,OAAO,CAAC,QAAQ,KAAK,eAAe;QACpC,QAAQ,CAAC,QAAQ,KAAK,eAAe,EACrC,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/listener.d.ts
CHANGED
|
@@ -37,8 +37,13 @@ export declare class FlowWorkListener {
|
|
|
37
37
|
private readonly publishing;
|
|
38
38
|
private readonly retryTimers;
|
|
39
39
|
private readonly readyTimers;
|
|
40
|
+
/** Per-room seeding chain, so concurrent seeds never interleave. */
|
|
41
|
+
private readonly seeding;
|
|
42
|
+
/** In-flight ready publications, so a seed never double-sends a ready. */
|
|
43
|
+
private readonly acknowledging;
|
|
40
44
|
private unsubscribe;
|
|
41
45
|
private started;
|
|
46
|
+
private readonly inputCoordinator;
|
|
42
47
|
constructor(options: FlowWorkListenerOptions);
|
|
43
48
|
/** Subscribe synchronously before any Matrix initial sync is started. */
|
|
44
49
|
start(): void;
|
|
@@ -48,11 +53,34 @@ export declare class FlowWorkListener {
|
|
|
48
53
|
private now;
|
|
49
54
|
private retryMs;
|
|
50
55
|
private handleInvite;
|
|
56
|
+
/**
|
|
57
|
+
* Seed the assignment table from a room's current state.
|
|
58
|
+
*
|
|
59
|
+
* Serialised per room and chained behind any seed already running, so a join
|
|
60
|
+
* transition, a pending invite and post-sync bootstrap can all request the
|
|
61
|
+
* same room without interleaving. Every accepted assignment is routed through
|
|
62
|
+
* {@link handleAssignment} — the same validation and deduplication path the
|
|
63
|
+
* live timeline handler uses — so a seeded assignment is never reprocessed
|
|
64
|
+
* and never re-acknowledged.
|
|
65
|
+
*/
|
|
51
66
|
private bootstrapRoom;
|
|
67
|
+
/** Never rejects: one unreadable event must not abandon the rest of a room. */
|
|
68
|
+
private seedRoomAssignments;
|
|
52
69
|
private handleRoomEvent;
|
|
53
70
|
private handleAssignment;
|
|
54
71
|
private hasOwnReady;
|
|
72
|
+
/**
|
|
73
|
+
* Publish ready at most once per accepted assignment at a time.
|
|
74
|
+
*
|
|
75
|
+
* `handleAssignment` runs to the point of registering the assignment
|
|
76
|
+
* synchronously, but the send that follows is awaited. Without this guard a
|
|
77
|
+
* seed and the live delivery of the same assign could both observe
|
|
78
|
+
* `ready === false` and each publish a ready. Concurrent callers for the same
|
|
79
|
+
* assignment object share the in-flight publication; a genuinely new
|
|
80
|
+
* assignment object (a later attempt) is allowed its own send.
|
|
81
|
+
*/
|
|
55
82
|
private acknowledgeAssignment;
|
|
83
|
+
private publishReady;
|
|
56
84
|
private handleInvocation;
|
|
57
85
|
private execute;
|
|
58
86
|
/** Preserve service contract caveats after the full exact nb comparison. */
|
package/dist/listener.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../src/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../src/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAK1E,OAAO,KAAK,EAEV,kBAAkB,EAEnB,MAAM,kBAAkB,CAAC;AAmB1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,kBAAkB,CAAC;IACzB,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC5C,kBAAkB,EAAE,mBAAmB,CAAC;IACxC,MAAM,EAAE,cAAc,CAAC;IACvB,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AA4BD;;;;;;GAMG;AACH,qBAAa,gBAAgB;IA0Bf,OAAO,CAAC,QAAQ,CAAC,OAAO;IAzBpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyC;IACrE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqC;IACrE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqC;IACvE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAGxB;IACJ,OAAO,CAAC,QAAQ,CAAC,WAAW,CAGxB;IACJ,oEAAoE;IACpE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAC5D,0EAA0E;IAC1E,OAAO,CAAC,QAAQ,CAAC,aAAa,CAG1B;IACJ,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0B;gBAE9B,OAAO,EAAE,uBAAuB;IAc7D,yEAAyE;IACzE,KAAK,IAAI,IAAI;IA0Cb,IAAI,IAAI,IAAI;IAWZ,6EAA6E;IACvE,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAShC,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,OAAO;YAKD,YAAY;IAQ1B;;;;;;;;;OASG;YACW,aAAa;IAW3B,+EAA+E;YACjE,mBAAmB;YAqBnB,eAAe;YAUf,gBAAgB;IAoE9B,OAAO,CAAC,WAAW;IAcnB;;;;;;;;;OASG;YACW,qBAAqB;YAmBrB,YAAY;YAmCZ,gBAAgB;YAwHhB,OAAO;IA+GrB,4EAA4E;IAC5E,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,aAAa;YAcP,cAAc;IA2B5B,OAAO,CAAC,oBAAoB;CAS7B"}
|
package/dist/listener.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { findCapability } from './capability.js';
|
|
2
|
+
import { FlowWorkInputError, InputRequestCoordinator, } from './input-requests.js';
|
|
2
3
|
import { FLOW_WORK_ASSIGN_EVENT, FLOW_WORK_BINDING_FIELDS, FLOW_WORK_INVOKE_EVENT, FLOW_WORK_READY_EVENT, FLOW_WORK_RECEIPT_EVENT, computeFlowWorkInputHash, flowWorkAssignSchema, flowWorkInvokeSchema, flowWorkReadySchema, flowWorkReceiptSchema, sameFlowWorkBinding, sameFlowWorkNb, } from './protocol.js';
|
|
3
4
|
class FlowWorkFailure extends Error {
|
|
4
5
|
code;
|
|
@@ -28,19 +29,33 @@ export class FlowWorkListener {
|
|
|
28
29
|
publishing = new Set();
|
|
29
30
|
retryTimers = new Map();
|
|
30
31
|
readyTimers = new Map();
|
|
32
|
+
/** Per-room seeding chain, so concurrent seeds never interleave. */
|
|
33
|
+
seeding = new Map();
|
|
34
|
+
/** In-flight ready publications, so a seed never double-sends a ready. */
|
|
35
|
+
acknowledging = new Map();
|
|
31
36
|
unsubscribe = [];
|
|
32
37
|
started = false;
|
|
38
|
+
inputCoordinator;
|
|
33
39
|
constructor(options) {
|
|
34
40
|
this.options = options;
|
|
35
41
|
if (options.capabilities.length === 0) {
|
|
36
42
|
throw new Error('flow-work has no declared capabilities');
|
|
37
43
|
}
|
|
44
|
+
const retryMs = this.retryMs();
|
|
45
|
+
const now = () => this.options.now?.() ?? Date.now();
|
|
46
|
+
this.inputCoordinator = new InputRequestCoordinator({
|
|
47
|
+
port: options.port,
|
|
48
|
+
logger: options.logger,
|
|
49
|
+
retryMs,
|
|
50
|
+
now,
|
|
51
|
+
});
|
|
38
52
|
}
|
|
39
53
|
/** Subscribe synchronously before any Matrix initial sync is started. */
|
|
40
54
|
start() {
|
|
41
55
|
if (this.started)
|
|
42
56
|
return;
|
|
43
57
|
this.started = true;
|
|
58
|
+
this.inputCoordinator.start();
|
|
44
59
|
const { port, logger } = this.options;
|
|
45
60
|
this.unsubscribe = [
|
|
46
61
|
port.onInvite((invite) => {
|
|
@@ -54,6 +69,16 @@ export class FlowWorkListener {
|
|
|
54
69
|
});
|
|
55
70
|
}),
|
|
56
71
|
];
|
|
72
|
+
// An assignment written before we joined arrives as room state, never as a
|
|
73
|
+
// live timeline event. joinRoom resolves before sync has that state locally,
|
|
74
|
+
// so seed again the moment our membership actually becomes join.
|
|
75
|
+
const offJoin = port.onJoin?.((roomId) => {
|
|
76
|
+
void this.bootstrapRoom(roomId).catch((error) => {
|
|
77
|
+
logger.error(`[flow-work] join seeding failed for ${roomId}: ${message(error)}`);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
if (offJoin)
|
|
81
|
+
this.unsubscribe.push(offJoin);
|
|
57
82
|
logger.log(`[flow-work] listening - capabilities: ${this.options.capabilities
|
|
58
83
|
.map((entry) => `${entry.can}#${entry.actionType}`)
|
|
59
84
|
.join(', ')}`);
|
|
@@ -64,6 +89,7 @@ export class FlowWorkListener {
|
|
|
64
89
|
void this.publishReceipt(key);
|
|
65
90
|
}
|
|
66
91
|
stop() {
|
|
92
|
+
this.inputCoordinator.stop();
|
|
67
93
|
for (const off of this.unsubscribe)
|
|
68
94
|
off();
|
|
69
95
|
this.unsubscribe = [];
|
|
@@ -96,9 +122,45 @@ export class FlowWorkListener {
|
|
|
96
122
|
this.options.logger.log(`[flow-work] joined ${invite.roomId} (invited by ${invite.inviterUserId})`);
|
|
97
123
|
await this.bootstrapRoom(invite.roomId);
|
|
98
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Seed the assignment table from a room's current state.
|
|
127
|
+
*
|
|
128
|
+
* Serialised per room and chained behind any seed already running, so a join
|
|
129
|
+
* transition, a pending invite and post-sync bootstrap can all request the
|
|
130
|
+
* same room without interleaving. Every accepted assignment is routed through
|
|
131
|
+
* {@link handleAssignment} — the same validation and deduplication path the
|
|
132
|
+
* live timeline handler uses — so a seeded assignment is never reprocessed
|
|
133
|
+
* and never re-acknowledged.
|
|
134
|
+
*/
|
|
99
135
|
async bootstrapRoom(roomId) {
|
|
100
|
-
|
|
101
|
-
|
|
136
|
+
const previous = this.seeding.get(roomId) ?? Promise.resolve();
|
|
137
|
+
const run = previous.then(() => this.seedRoomAssignments(roomId));
|
|
138
|
+
this.seeding.set(roomId, run);
|
|
139
|
+
try {
|
|
140
|
+
await run;
|
|
141
|
+
}
|
|
142
|
+
finally {
|
|
143
|
+
if (this.seeding.get(roomId) === run)
|
|
144
|
+
this.seeding.delete(roomId);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/** Never rejects: one unreadable event must not abandon the rest of a room. */
|
|
148
|
+
async seedRoomAssignments(roomId) {
|
|
149
|
+
let events;
|
|
150
|
+
try {
|
|
151
|
+
events = this.options.port.stateEvents(roomId, FLOW_WORK_ASSIGN_EVENT);
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
this.options.logger.error(`[flow-work] failed to read assignment state in ${roomId}: ${message(error)}`);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
for (const event of events) {
|
|
158
|
+
try {
|
|
159
|
+
await this.handleAssignment(event);
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
this.options.logger.error(`[flow-work] failed to seed an assignment in ${roomId}: ${message(error)}`);
|
|
163
|
+
}
|
|
102
164
|
}
|
|
103
165
|
}
|
|
104
166
|
async handleRoomEvent(event) {
|
|
@@ -179,8 +241,32 @@ export class FlowWorkListener {
|
|
|
179
241
|
return ready.success && sameFlowWorkBinding(ready.data, binding);
|
|
180
242
|
});
|
|
181
243
|
}
|
|
244
|
+
/**
|
|
245
|
+
* Publish ready at most once per accepted assignment at a time.
|
|
246
|
+
*
|
|
247
|
+
* `handleAssignment` runs to the point of registering the assignment
|
|
248
|
+
* synchronously, but the send that follows is awaited. Without this guard a
|
|
249
|
+
* seed and the live delivery of the same assign could both observe
|
|
250
|
+
* `ready === false` and each publish a ready. Concurrent callers for the same
|
|
251
|
+
* assignment object share the in-flight publication; a genuinely new
|
|
252
|
+
* assignment object (a later attempt) is allowed its own send.
|
|
253
|
+
*/
|
|
182
254
|
async acknowledgeAssignment(roomId, assignment) {
|
|
183
255
|
const key = assignmentKey(roomId, assignment.binding.invocationId);
|
|
256
|
+
const inFlight = this.acknowledging.get(key);
|
|
257
|
+
if (inFlight?.assignment === assignment) {
|
|
258
|
+
await inFlight.promise;
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
const promise = this.publishReady(roomId, assignment, key).finally(() => {
|
|
262
|
+
if (this.acknowledging.get(key)?.promise === promise) {
|
|
263
|
+
this.acknowledging.delete(key);
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
this.acknowledging.set(key, { assignment, promise });
|
|
267
|
+
await promise;
|
|
268
|
+
}
|
|
269
|
+
async publishReady(roomId, assignment, key) {
|
|
184
270
|
try {
|
|
185
271
|
await this.options.port.sendStateEvent(roomId, FLOW_WORK_READY_EVENT, assignment.binding.invocationId, { ...assignment.binding, status: 'ready' });
|
|
186
272
|
assignment.ready = true;
|
|
@@ -282,9 +368,12 @@ export class FlowWorkListener {
|
|
|
282
368
|
}
|
|
283
369
|
else {
|
|
284
370
|
try {
|
|
285
|
-
receipt = await this.execute(invoke, binding);
|
|
371
|
+
receipt = await this.execute(event.roomId, invoke, binding);
|
|
286
372
|
}
|
|
287
373
|
catch (error) {
|
|
374
|
+
if (error instanceof FlowWorkInputError && error.code === 'aborted') {
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
288
377
|
const failure = error instanceof FlowWorkFailure
|
|
289
378
|
? error
|
|
290
379
|
: new FlowWorkFailure('tool_error', message(error));
|
|
@@ -302,7 +391,7 @@ export class FlowWorkListener {
|
|
|
302
391
|
}
|
|
303
392
|
await this.publishReceipt(key);
|
|
304
393
|
}
|
|
305
|
-
async execute(invoke, binding) {
|
|
394
|
+
async execute(roomId, invoke, binding) {
|
|
306
395
|
const capability = findCapability(this.options.capabilities, invoke.capability, invoke.actionType);
|
|
307
396
|
if (!capability) {
|
|
308
397
|
throw new FlowWorkFailure('capability_not_declared', `Capability '${invoke.capability}' with actionType '${invoke.actionType}' is not declared by this oracle.`);
|
|
@@ -345,9 +434,21 @@ export class FlowWorkListener {
|
|
|
345
434
|
contractCaveats: structuredClone(binding.contractCaveats),
|
|
346
435
|
audience: invoke.audience,
|
|
347
436
|
delegation: invoke.delegation,
|
|
437
|
+
input: {
|
|
438
|
+
request: (params) => this.inputCoordinator.request({
|
|
439
|
+
roomId,
|
|
440
|
+
invocationId: invoke.invocationId,
|
|
441
|
+
nodeId: invoke.nodeId,
|
|
442
|
+
attempt: invoke.attempt,
|
|
443
|
+
inputHash: invoke.inputHash,
|
|
444
|
+
bindingDeadline: binding.deadline,
|
|
445
|
+
}, params),
|
|
446
|
+
},
|
|
348
447
|
});
|
|
349
448
|
}
|
|
350
449
|
catch (error) {
|
|
450
|
+
if (error instanceof FlowWorkInputError)
|
|
451
|
+
throw error;
|
|
351
452
|
throw new FlowWorkFailure('tool_error', message(error));
|
|
352
453
|
}
|
|
353
454
|
if (capability.outputSchema) {
|
package/dist/listener.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../src/listener.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../src/listener.ts"],"names":[],"mappings":"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"}
|
package/dist/matrix-port.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type MatrixClient } from 'matrix-js-sdk';
|
|
2
2
|
/**
|
|
3
3
|
* The narrow slice of Matrix the flow-work listener needs. Production wraps
|
|
4
4
|
* matrix-js-sdk; tests can provide a deterministic in-memory implementation.
|
|
@@ -20,6 +20,8 @@ export interface FlowWorkRoomEvent {
|
|
|
20
20
|
/** Present for Matrix state events, including an empty state key. */
|
|
21
21
|
stateKey?: string;
|
|
22
22
|
eventId?: string;
|
|
23
|
+
/** Matrix origin-server timestamp, required for deterministic relation ordering. */
|
|
24
|
+
originServerTs?: number;
|
|
23
25
|
}
|
|
24
26
|
export interface FlowWorkInvite {
|
|
25
27
|
roomId: string;
|
|
@@ -27,20 +29,36 @@ export interface FlowWorkInvite {
|
|
|
27
29
|
}
|
|
28
30
|
export interface FlowWorkMatrixPort {
|
|
29
31
|
onInvite(handler: (invite: FlowWorkInvite) => void): () => void;
|
|
32
|
+
/**
|
|
33
|
+
* Our own membership transitioning into `join` for a room.
|
|
34
|
+
*
|
|
35
|
+
* Distinct from {@link onInvite}: `joinRoom` resolves before sync has applied
|
|
36
|
+
* the room's current state locally, so an assignment written before we joined
|
|
37
|
+
* is not yet readable from {@link stateEvents}. This fires once sync has the
|
|
38
|
+
* room, which is the point at which that state can be seeded.
|
|
39
|
+
*
|
|
40
|
+
* Optional so existing port implementations keep compiling; when it is absent
|
|
41
|
+
* the listener still seeds at invite time and on bootstrap.
|
|
42
|
+
*/
|
|
43
|
+
onJoin?(handler: (roomId: string) => void): () => void;
|
|
30
44
|
onRoomEvent(handler: (event: FlowWorkRoomEvent) => void): () => void;
|
|
31
45
|
joinRoom(roomId: string): Promise<void>;
|
|
32
|
-
sendEvent(roomId: string, type: FlowWorkEventType, content: Record<string, unknown>): Promise<
|
|
46
|
+
sendEvent(roomId: string, type: FlowWorkEventType, content: Record<string, unknown>): Promise<{
|
|
47
|
+
eventId: string;
|
|
48
|
+
}>;
|
|
33
49
|
sendStateEvent(roomId: string, type: FlowWorkEventType, stateKey: string, content: Record<string, unknown>): Promise<void>;
|
|
34
50
|
/** Legacy timeline access retained for transport consumers. */
|
|
35
51
|
recentEvents(roomId: string, limit: number): FlowWorkRoomEvent[];
|
|
36
52
|
/** Durable current-state read; receipt replay never depends on timeline depth. */
|
|
37
53
|
stateEvents(roomId: string, type: string): FlowWorkRoomEvent[];
|
|
54
|
+
/** Fetch every m.reference child in forward order, independent of sync depth. */
|
|
55
|
+
relatedEvents(roomId: string, eventId: string, relType: 'm.reference'): Promise<FlowWorkRoomEvent[]>;
|
|
38
56
|
getJoinedRoomIds(): string[];
|
|
39
57
|
getPendingInvites(): FlowWorkInvite[];
|
|
40
58
|
/** Authenticated local Matrix sender, used to reject forged receipt state. */
|
|
41
59
|
getUserId(): string | null;
|
|
42
60
|
}
|
|
43
61
|
/** Wrap a live matrix-js-sdk client in the flow-work port interface. */
|
|
44
|
-
export declare function adaptMatrixClient(client:
|
|
62
|
+
export declare function adaptMatrixClient(client: MatrixClient): FlowWorkMatrixPort;
|
|
45
63
|
export {};
|
|
46
64
|
//# sourceMappingURL=matrix-port.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matrix-port.d.ts","sourceRoot":"","sources":["../src/matrix-port.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"matrix-port.d.ts","sourceRoot":"","sources":["../src/matrix-port.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,eAAe,CAAC;AAIvB;;;GAGG;AAEH,OAAO,QAAQ,eAAe,CAAC;IAC7B,UAAU,cAAc;QACtB,CAAC,GAAG,EAAE,iBAAiB,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC3D;IACD,UAAU,WAAW;QACnB,CAAC,GAAG,EAAE,iBAAiB,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC3D;CACF;AAED,KAAK,iBAAiB,GAAG,iBAAiB,MAAM,EAAE,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAChE;;;;;;;;;;OAUG;IACH,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACvD,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACrE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,SAAS,CACP,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChC,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,+DAA+D;IAC/D,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACjE,kFAAkF;IAClF,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAAC;IAC/D,iFAAiF;IACjF,aAAa,CACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAChC,gBAAgB,IAAI,MAAM,EAAE,CAAC;IAC7B,iBAAiB,IAAI,cAAc,EAAE,CAAC;IACtC,8EAA8E;IAC9E,SAAS,IAAI,MAAM,GAAG,IAAI,CAAC;CAC5B;AAiBD,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,kBAAkB,CAmK1E"}
|