@braidhq/server 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +3 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +32 -6
- package/dist/app.js.map +1 -1
- package/dist/composeApp.d.ts +9 -4
- package/dist/composeApp.d.ts.map +1 -1
- package/dist/composeApp.js +13 -6
- package/dist/composeApp.js.map +1 -1
- package/dist/composeFsApp.d.ts +49 -3
- package/dist/composeFsApp.d.ts.map +1 -1
- package/dist/composeFsApp.js +156 -61
- package/dist/composeFsApp.js.map +1 -1
- package/dist/defaultOntologyPlugins.d.ts +9 -0
- package/dist/defaultOntologyPlugins.d.ts.map +1 -0
- package/dist/defaultOntologyPlugins.js +11 -0
- package/dist/defaultOntologyPlugins.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/auth/AccessPolicy.d.ts +1 -1
- package/dist/infrastructure/auth/SessionStore.d.ts.map +1 -1
- package/dist/infrastructure/auth/SessionStore.js +5 -2
- package/dist/infrastructure/auth/SessionStore.js.map +1 -1
- package/dist/infrastructure/batch/FsBatchPlanRepository.d.ts +2 -67
- package/dist/infrastructure/batch/FsBatchPlanRepository.d.ts.map +1 -1
- package/dist/infrastructure/batch/FsBatchPlanRepository.js +8 -6
- package/dist/infrastructure/batch/FsBatchPlanRepository.js.map +1 -1
- package/dist/infrastructure/hitl/FsClarificationRepository.d.ts +1 -1
- package/dist/infrastructure/hitl/FsClarificationRepository.d.ts.map +1 -1
- package/dist/infrastructure/hitl/FsClarificationRepository.js +8 -7
- package/dist/infrastructure/hitl/FsClarificationRepository.js.map +1 -1
- package/dist/infrastructure/hitl/FsProposalRepository.d.ts.map +1 -1
- package/dist/infrastructure/hitl/FsProposalRepository.js +2 -1
- package/dist/infrastructure/hitl/FsProposalRepository.js.map +1 -1
- package/dist/infrastructure/model/FsModelSerializer.d.ts +2 -4
- package/dist/infrastructure/model/FsModelSerializer.d.ts.map +1 -1
- package/dist/infrastructure/oauth/GitHubOAuth.d.ts +45 -0
- package/dist/infrastructure/oauth/GitHubOAuth.d.ts.map +1 -0
- package/dist/infrastructure/oauth/GitHubOAuth.js +85 -0
- package/dist/infrastructure/oauth/GitHubOAuth.js.map +1 -0
- package/dist/infrastructure/oauth/providers.d.ts +19 -0
- package/dist/infrastructure/oauth/providers.d.ts.map +1 -0
- package/dist/infrastructure/oauth/providers.js +22 -0
- package/dist/infrastructure/oauth/providers.js.map +1 -0
- package/dist/infrastructure/skill/FsSkillRegistry.d.ts +6 -0
- package/dist/infrastructure/skill/FsSkillRegistry.d.ts.map +1 -1
- package/dist/infrastructure/skill/FsSkillRegistry.js +7 -1
- package/dist/infrastructure/skill/FsSkillRegistry.js.map +1 -1
- package/dist/infrastructure/skill/SubprocessSkillRunner.d.ts +26 -5
- package/dist/infrastructure/skill/SubprocessSkillRunner.d.ts.map +1 -1
- package/dist/infrastructure/skill/SubprocessSkillRunner.js +125 -13
- package/dist/infrastructure/skill/SubprocessSkillRunner.js.map +1 -1
- package/dist/infrastructure/source/unitScan.d.ts +11 -0
- package/dist/infrastructure/source/unitScan.d.ts.map +1 -0
- package/dist/infrastructure/source/{intentScan.js → unitScan.js} +19 -12
- package/dist/infrastructure/source/unitScan.js.map +1 -0
- package/dist/infrastructure/users/UserDirectoryFromRegistry.d.ts.map +1 -1
- package/dist/infrastructure/users/UserDirectoryFromRegistry.js +1 -0
- package/dist/infrastructure/users/UserDirectoryFromRegistry.js.map +1 -1
- package/dist/infrastructure/workspace/productManifestWriter.d.ts +5 -1
- package/dist/infrastructure/workspace/productManifestWriter.d.ts.map +1 -1
- package/dist/infrastructure/workspace/productManifestWriter.js +5 -2
- package/dist/infrastructure/workspace/productManifestWriter.js.map +1 -1
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +18 -1
- package/dist/middleware/auth.js.map +1 -1
- package/dist/routes/clarifications.d.ts.map +1 -1
- package/dist/routes/clarifications.js +25 -22
- package/dist/routes/clarifications.js.map +1 -1
- package/dist/routes/oauth.d.ts +51 -10
- package/dist/routes/oauth.d.ts.map +1 -1
- package/dist/routes/oauth.js +174 -62
- package/dist/routes/oauth.js.map +1 -1
- package/dist/routes/ontologies.d.ts +7 -0
- package/dist/routes/ontologies.d.ts.map +1 -0
- package/dist/routes/ontologies.js +29 -0
- package/dist/routes/ontologies.js.map +1 -0
- package/dist/routes/ontology.d.ts.map +1 -1
- package/dist/routes/ontology.js +2 -1
- package/dist/routes/ontology.js.map +1 -1
- package/dist/routes/proposals.d.ts.map +1 -1
- package/dist/routes/proposals.js +5 -2
- package/dist/routes/proposals.js.map +1 -1
- package/dist/routes/skillInputOptions.js +16 -14
- package/dist/routes/skillInputOptions.js.map +1 -1
- package/dist/routes/skills.d.ts.map +1 -1
- package/dist/routes/skills.js +7 -5
- package/dist/routes/skills.js.map +1 -1
- package/dist/routes/sourceConnection.d.ts +30 -0
- package/dist/routes/sourceConnection.d.ts.map +1 -0
- package/dist/routes/sourceConnection.js +51 -0
- package/dist/routes/sourceConnection.js.map +1 -0
- package/dist/routes/sourceUnitObservations.d.ts +3 -3
- package/dist/routes/sourceUnitObservations.d.ts.map +1 -1
- package/dist/routes/sourceUnitObservations.js +3 -3
- package/dist/routes/sourceUnitObservations.js.map +1 -1
- package/dist/routes/workspaces.d.ts +6 -0
- package/dist/routes/workspaces.d.ts.map +1 -1
- package/dist/routes/workspaces.js +12 -7
- package/dist/routes/workspaces.js.map +1 -1
- package/dist/serviceAccounts.d.ts +13 -0
- package/dist/serviceAccounts.d.ts.map +1 -0
- package/dist/serviceAccounts.js +26 -0
- package/dist/serviceAccounts.js.map +1 -0
- package/package.json +34 -39
- package/dist/infrastructure/source/intentScan.d.ts +0 -13
- package/dist/infrastructure/source/intentScan.d.ts.map +0 -1
- package/dist/infrastructure/source/intentScan.js.map +0 -1
|
@@ -8,6 +8,6 @@ export declare class FsClarificationRepository implements ClarificationRepositor
|
|
|
8
8
|
constructor(options: FsClarificationRepositoryOptions);
|
|
9
9
|
list(filter?: ClarificationFilter): Promise<Clarification[]>;
|
|
10
10
|
load(clarificationId: ClarificationId): Promise<Clarification>;
|
|
11
|
-
save(
|
|
11
|
+
save(clarification: Clarification): Promise<void>;
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=FsClarificationRepository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FsClarificationRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/hitl/FsClarificationRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,WAAW,EACZ,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,aAAa,EAAE,KAAK,uBAAuB,EAAY,MAAM,eAAe,CAAA;AAKrF,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAA;CAC/E;AAED,qBAAa,yBAA0B,YAAW,uBAAuB;IACvE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoF;gBAE7F,OAAO,EAAE,gCAAgC;IAgB/C,IAAI,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"FsClarificationRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/hitl/FsClarificationRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,WAAW,EACZ,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,aAAa,EAAE,KAAK,uBAAuB,EAAY,MAAM,eAAe,CAAA;AAKrF,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAA;CAC/E;AAED,qBAAa,yBAA0B,YAAW,uBAAuB;IACvE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoF;gBAE7F,OAAO,EAAE,gCAAgC;IAgB/C,IAAI,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAiBlE,IAAI,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;IAI9D,IAAI,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAGlD"}
|
|
@@ -17,23 +17,24 @@ export class FsClarificationRepository {
|
|
|
17
17
|
}, options.workspaceRoots);
|
|
18
18
|
}
|
|
19
19
|
async list(filter) {
|
|
20
|
-
let
|
|
20
|
+
let clarifications = await this.base.list({
|
|
21
21
|
...(filter?.workspaceId !== undefined ? { workspaceId: filter.workspaceId } : {}),
|
|
22
22
|
...(filter?.statuses !== undefined ? { statuses: filter.statuses } : {}),
|
|
23
23
|
});
|
|
24
|
-
// Pending
|
|
25
|
-
// Answered, applied, and skipped
|
|
24
|
+
// Pending clarifications are personal, only the owner sees them.
|
|
25
|
+
// Answered, applied, and skipped clarifications stay workspace-shared.
|
|
26
26
|
if (filter?.viewerId !== undefined) {
|
|
27
27
|
const viewerId = filter.viewerId;
|
|
28
|
-
|
|
28
|
+
const includeServiceOwned = filter.includeServiceOwned ?? false;
|
|
29
|
+
clarifications = clarifications.filter(clarification => clarification.status !== 'pending' || clarification.owner === viewerId || (includeServiceOwned && clarification.ownerKind === 'service'));
|
|
29
30
|
}
|
|
30
|
-
return paginate(
|
|
31
|
+
return paginate(clarifications, filter?.limit, filter?.offset);
|
|
31
32
|
}
|
|
32
33
|
load(clarificationId) {
|
|
33
34
|
return this.base.load(clarificationId);
|
|
34
35
|
}
|
|
35
|
-
save(
|
|
36
|
-
return this.base.save(
|
|
36
|
+
save(clarification) {
|
|
37
|
+
return this.base.save(clarification);
|
|
37
38
|
}
|
|
38
39
|
}
|
|
39
40
|
//# sourceMappingURL=FsClarificationRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FsClarificationRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/hitl/FsClarificationRepository.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAgC,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrF,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAM1D,MAAM,OAAO,yBAAyB;IACnB,IAAI,CAAoF;IAEzG,YAAY,OAAyC;QACnD,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAiB,CAC/B;YACE,UAAU,EAAE,eAAe;YAC3B,QAAQ,EAAE,gBAAgB;YAC1B,MAAM,EAAE,gBAAgB;YACxB,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/D,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;YACpC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;YACzB,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;YACjC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;SAC5C,EACD,OAAO,CAAC,cAAc,CACvB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAA4B;QACrC,IAAI,
|
|
1
|
+
{"version":3,"file":"FsClarificationRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/hitl/FsClarificationRepository.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAgC,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrF,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAM1D,MAAM,OAAO,yBAAyB;IACnB,IAAI,CAAoF;IAEzG,YAAY,OAAyC;QACnD,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAiB,CAC/B;YACE,UAAU,EAAE,eAAe;YAC3B,QAAQ,EAAE,gBAAgB;YAC1B,MAAM,EAAE,gBAAgB;YACxB,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/D,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;YACpC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;YACzB,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;YACjC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;SAC5C,EACD,OAAO,CAAC,cAAc,CACvB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAA4B;QACrC,IAAI,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACxC,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,GAAG,CAAC,MAAM,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC,CAAA;QACF,iEAAiE;QACjE,uEAAuE;QACvE,IAAI,MAAM,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;YAChC,MAAM,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,KAAK,CAAA;YAC/D,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CACrD,aAAa,CAAC,MAAM,KAAK,SAAS,IAAI,aAAa,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,mBAAmB,IAAI,aAAa,CAAC,SAAS,KAAK,SAAS,CAAC,CACzI,CAAA;QACH,CAAC;QACD,OAAO,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAChE,CAAC;IAED,IAAI,CAAC,eAAgC;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,CAAC,aAA4B;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACtC,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FsProposalRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/hitl/FsProposalRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC5F,OAAO,EAAY,QAAQ,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAK3E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAA;CAC/E;AAED,qBAAa,oBAAqB,YAAW,kBAAkB;IAC7D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2E;gBAEpF,OAAO,EAAE,2BAA2B;IAgB1C,IAAI,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"FsProposalRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/hitl/FsProposalRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC5F,OAAO,EAAY,QAAQ,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAK3E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAA;CAC/E;AAED,qBAAa,oBAAqB,YAAW,kBAAkB;IAC7D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2E;gBAEpF,OAAO,EAAE,2BAA2B;IAgB1C,IAAI,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAsBxD,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;IAI/C,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAG9C"}
|
|
@@ -30,7 +30,8 @@ export class FsProposalRepository {
|
|
|
30
30
|
// Absent viewerId means no filter, for Owner Show All and legacy callers.
|
|
31
31
|
if (filter?.viewerId !== undefined) {
|
|
32
32
|
const viewerId = filter.viewerId;
|
|
33
|
-
|
|
33
|
+
const includeServiceOwned = filter.includeServiceOwned ?? false;
|
|
34
|
+
proposals = proposals.filter(proposal => proposal.status !== 'pending' || proposal.owner === viewerId || (includeServiceOwned && proposal.ownerKind === 'service'));
|
|
34
35
|
}
|
|
35
36
|
return paginate(proposals, filter?.limit, filter?.offset);
|
|
36
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FsProposalRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/hitl/FsProposalRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAA2B,MAAM,eAAe,CAAA;AAC3E,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAM1D,MAAM,OAAO,oBAAoB;IACd,IAAI,CAA2E;IAEhG,YAAY,OAAoC;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAiB,CAC/B;YACE,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,iBAAiB;YAC3B,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrD,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;YACpC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;YACzB,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;YACjC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;SAC5C,EACD,OAAO,CAAC,cAAc,CACvB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAuB;QAChC,IAAI,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACnC,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,GAAG,CAAC,MAAM,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC,CAAA;QACF,IAAI,MAAM,EAAE,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAA;YACjC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAA;QACjF,CAAC;QACD,4DAA4D;QAC5D,+DAA+D;QAC/D,0EAA0E;QAC1E,IAAI,MAAM,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;YAChC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CACtC,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"FsProposalRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/hitl/FsProposalRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAA2B,MAAM,eAAe,CAAA;AAC3E,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAM1D,MAAM,OAAO,oBAAoB;IACd,IAAI,CAA2E;IAEhG,YAAY,OAAoC;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAiB,CAC/B;YACE,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,iBAAiB;YAC3B,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrD,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;YACpC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;YACzB,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;YACjC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;SAC5C,EACD,OAAO,CAAC,cAAc,CACvB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAuB;QAChC,IAAI,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACnC,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,GAAG,CAAC,MAAM,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC,CAAA;QACF,IAAI,MAAM,EAAE,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAA;YACjC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAA;QACjF,CAAC;QACD,4DAA4D;QAC5D,+DAA+D;QAC/D,0EAA0E;QAC1E,IAAI,MAAM,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;YAChC,MAAM,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,KAAK,CAAA;YAC/D,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CACtC,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,mBAAmB,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,CAC1H,CAAA;QACH,CAAC;QACD,OAAO,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3D,CAAC;IAED,IAAI,CAAC,UAAsB;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACnC,CAAC;IAED,IAAI,CAAC,QAAkB;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACjC,CAAC;IAED,MAAM,CAAC,UAAsB;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACrC,CAAC;CACF"}
|
|
@@ -11,14 +11,12 @@ export declare const ModelJsonFile: z.ZodObject<{
|
|
|
11
11
|
description: z.ZodOptional<z.ZodString>;
|
|
12
12
|
status: z.ZodEnum<{
|
|
13
13
|
completed: "completed";
|
|
14
|
+
deprecated: "deprecated";
|
|
14
15
|
draft: "draft";
|
|
15
16
|
unclear: "unclear";
|
|
16
|
-
deprecated: "deprecated";
|
|
17
17
|
}>;
|
|
18
18
|
metadata: z.ZodObject<{
|
|
19
|
-
|
|
20
|
-
intentConflict: z.ZodOptional<z.ZodBoolean>;
|
|
21
|
-
implementationMissing: z.ZodOptional<z.ZodBoolean>;
|
|
19
|
+
missingRoles: z.ZodOptional<z.ZodArray<z.core.$ZodBranded<z.ZodString, "SourceRole", "out">>>;
|
|
22
20
|
sourceReferences: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
23
21
|
sourceId: z.core.$ZodBranded<z.ZodString, "SourceId", "out">;
|
|
24
22
|
location: z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FsModelSerializer.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/model/FsModelSerializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAIpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,kBAAkB,IAAI,CAAA;AAEnC,eAAO,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"FsModelSerializer.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/model/FsModelSerializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAIpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,kBAAkB,IAAI,CAAA;AAEnC,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIxB,CAAA;AAEF,qBAAa,iBAAkB,YAAW,eAAe;IACjD,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAenE,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAmBzD,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;CASrD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export interface GitHubOAuthConfig {
|
|
2
|
+
readonly clientId: string;
|
|
3
|
+
readonly clientSecret: string;
|
|
4
|
+
readonly redirectUri: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Tokens from the GitHub App user-to-server flow.
|
|
8
|
+
* GitHub rotates the refresh token on every refresh,
|
|
9
|
+
* so a refreshed set always carries a new `refreshToken`,
|
|
10
|
+
* unlike Google which keeps one.
|
|
11
|
+
*/
|
|
12
|
+
export interface GitHubTokenSet {
|
|
13
|
+
readonly accessToken: string;
|
|
14
|
+
readonly refreshToken: string;
|
|
15
|
+
readonly expiresAt: string;
|
|
16
|
+
readonly refreshTokenExpiresAt: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Minimal GitHub App user-to-server OAuth client, a mirror of GoogleOAuth.
|
|
20
|
+
* Three calls are needed, build the URL, exchange the code, and refresh.
|
|
21
|
+
* GitHub has no PKCE, and a GitHub App fixes its permissions on the App,
|
|
22
|
+
* so there is no `scope` parameter here.
|
|
23
|
+
*
|
|
24
|
+
* The App must enable expiring user tokens. Without them,
|
|
25
|
+
* GitHub returns no refresh token, and `exchangeCode` throws an error.
|
|
26
|
+
*/
|
|
27
|
+
export declare class GitHubOAuth {
|
|
28
|
+
private readonly config;
|
|
29
|
+
private readonly fetchFn;
|
|
30
|
+
constructor(config: GitHubOAuthConfig, fetchFn?: typeof globalThis.fetch);
|
|
31
|
+
/**
|
|
32
|
+
* Build the URL the user's browser is sent to.
|
|
33
|
+
* `state` MUST be unique per flow,
|
|
34
|
+
* the caller stores it until the callback arrives.
|
|
35
|
+
*/
|
|
36
|
+
buildAuthorizationUrl(input: {
|
|
37
|
+
state: string;
|
|
38
|
+
}): string;
|
|
39
|
+
exchangeCode(input: {
|
|
40
|
+
code: string;
|
|
41
|
+
}): Promise<GitHubTokenSet>;
|
|
42
|
+
refreshAccessToken(refreshToken: string): Promise<GitHubTokenSet>;
|
|
43
|
+
private postToken;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=GitHubOAuth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GitHubOAuth.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/oauth/GitHubOAuth.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAEhC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IAEzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAG7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAA;CACvC;AAED;;;;;;;;GAQG;AACH,qBAAa,WAAW;IAGV,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAEpB,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAE,OAAO,UAAU,CAAC,KAAwB;IAI3G;;;;OAIG;IACH,qBAAqB,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IASjD,YAAY,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAgB9D,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YAYzD,SAAS;CAiBxB"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
const AUTH_ENDPOINT = 'https://github.com/login/oauth/authorize';
|
|
2
|
+
const TOKEN_ENDPOINT = 'https://github.com/login/oauth/access_token';
|
|
3
|
+
/**
|
|
4
|
+
* Minimal GitHub App user-to-server OAuth client, a mirror of GoogleOAuth.
|
|
5
|
+
* Three calls are needed, build the URL, exchange the code, and refresh.
|
|
6
|
+
* GitHub has no PKCE, and a GitHub App fixes its permissions on the App,
|
|
7
|
+
* so there is no `scope` parameter here.
|
|
8
|
+
*
|
|
9
|
+
* The App must enable expiring user tokens. Without them,
|
|
10
|
+
* GitHub returns no refresh token, and `exchangeCode` throws an error.
|
|
11
|
+
*/
|
|
12
|
+
export class GitHubOAuth {
|
|
13
|
+
config;
|
|
14
|
+
fetchFn;
|
|
15
|
+
constructor(config, fetchFn = globalThis.fetch) {
|
|
16
|
+
this.config = config;
|
|
17
|
+
this.fetchFn = fetchFn;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Build the URL the user's browser is sent to.
|
|
21
|
+
* `state` MUST be unique per flow,
|
|
22
|
+
* the caller stores it until the callback arrives.
|
|
23
|
+
*/
|
|
24
|
+
buildAuthorizationUrl(input) {
|
|
25
|
+
const params = new URLSearchParams({
|
|
26
|
+
client_id: this.config.clientId,
|
|
27
|
+
redirect_uri: this.config.redirectUri,
|
|
28
|
+
state: input.state,
|
|
29
|
+
});
|
|
30
|
+
return `${AUTH_ENDPOINT}?${params.toString()}`;
|
|
31
|
+
}
|
|
32
|
+
async exchangeCode(input) {
|
|
33
|
+
const payload = await this.postToken(new URLSearchParams({
|
|
34
|
+
client_id: this.config.clientId,
|
|
35
|
+
client_secret: this.config.clientSecret,
|
|
36
|
+
redirect_uri: this.config.redirectUri,
|
|
37
|
+
grant_type: 'authorization_code',
|
|
38
|
+
code: input.code,
|
|
39
|
+
}));
|
|
40
|
+
if (!payload.refresh_token || payload.expires_in === undefined) {
|
|
41
|
+
throw new Error('GitHub did not return a refresh token. Enable expiring user tokens on the GitHub App, then reconnect.');
|
|
42
|
+
}
|
|
43
|
+
return tokenSetFromPayload(payload);
|
|
44
|
+
}
|
|
45
|
+
async refreshAccessToken(refreshToken) {
|
|
46
|
+
const payload = await this.postToken(new URLSearchParams({
|
|
47
|
+
client_id: this.config.clientId,
|
|
48
|
+
client_secret: this.config.clientSecret,
|
|
49
|
+
grant_type: 'refresh_token',
|
|
50
|
+
refresh_token: refreshToken,
|
|
51
|
+
}));
|
|
52
|
+
if (!payload.refresh_token || payload.expires_in === undefined)
|
|
53
|
+
throw new Error('GitHub refresh did not return a rotated refresh token.');
|
|
54
|
+
return tokenSetFromPayload(payload);
|
|
55
|
+
}
|
|
56
|
+
async postToken(body) {
|
|
57
|
+
const response = await this.fetchFn(TOKEN_ENDPOINT, {
|
|
58
|
+
method: 'POST',
|
|
59
|
+
headers: { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
60
|
+
body,
|
|
61
|
+
});
|
|
62
|
+
if (!response.ok) {
|
|
63
|
+
const text = await response.text().catch(() => '');
|
|
64
|
+
throw new Error(`GitHub token request failed: ${response.status} ${response.statusText} ${text}`);
|
|
65
|
+
}
|
|
66
|
+
const payload = await response.json();
|
|
67
|
+
// GitHub reports OAuth failures as HTTP 200 with an `error` field,
|
|
68
|
+
// so a non-error status alone does not mean the exchange succeeded.
|
|
69
|
+
if (payload.error)
|
|
70
|
+
throw new Error(`GitHub token request failed: ${payload.error_description ?? payload.error}`);
|
|
71
|
+
return payload;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function tokenSetFromPayload(p) {
|
|
75
|
+
return {
|
|
76
|
+
accessToken: p.access_token,
|
|
77
|
+
refreshToken: p.refresh_token,
|
|
78
|
+
expiresAt: secondsFromNow(p.expires_in).toISOString(),
|
|
79
|
+
refreshTokenExpiresAt: secondsFromNow(p.refresh_token_expires_in ?? p.expires_in).toISOString(),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function secondsFromNow(seconds) {
|
|
83
|
+
return new Date(Date.now() + seconds * 1000);
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=GitHubOAuth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GitHubOAuth.js","sourceRoot":"","sources":["../../../src/infrastructure/oauth/GitHubOAuth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** A connectable OAuth provider and where its tokens and sources live. */
|
|
2
|
+
export interface OAuthProviderInfo {
|
|
3
|
+
readonly id: 'google' | 'github';
|
|
4
|
+
readonly label: string;
|
|
5
|
+
readonly namespace: string;
|
|
6
|
+
readonly loaderKind: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The single place a provider's id, label, token namespace,
|
|
10
|
+
* and loader kind are tied together. Routes and the composition root
|
|
11
|
+
* derive their lists from this,
|
|
12
|
+
* so a new provider is one entry here rather than edits across files.
|
|
13
|
+
*/
|
|
14
|
+
export declare const OAUTH_PROVIDERS: readonly OAuthProviderInfo[];
|
|
15
|
+
/** The registry entry for a provider id. */
|
|
16
|
+
export declare function oauthProvider(id: OAuthProviderInfo['id']): OAuthProviderInfo;
|
|
17
|
+
/** The secret-store namespace a provider's tokens live under. */
|
|
18
|
+
export declare function oauthNamespace(id: OAuthProviderInfo['id']): string;
|
|
19
|
+
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/oauth/providers.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IAEtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAE1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,iBAAiB,EAGvD,CAAA;AAED,4CAA4C;AAC5C,wBAAgB,aAAa,CAAC,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAK5E;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,GAAG,MAAM,CAElE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The single place a provider's id, label, token namespace,
|
|
3
|
+
* and loader kind are tied together. Routes and the composition root
|
|
4
|
+
* derive their lists from this,
|
|
5
|
+
* so a new provider is one entry here rather than edits across files.
|
|
6
|
+
*/
|
|
7
|
+
export const OAUTH_PROVIDERS = [
|
|
8
|
+
{ id: 'google', label: 'Google', namespace: 'oauth-google', loaderKind: 'gdrive' },
|
|
9
|
+
{ id: 'github', label: 'GitHub', namespace: 'oauth-github', loaderKind: 'github' },
|
|
10
|
+
];
|
|
11
|
+
/** The registry entry for a provider id. */
|
|
12
|
+
export function oauthProvider(id) {
|
|
13
|
+
const provider = OAUTH_PROVIDERS.find(entry => entry.id === id);
|
|
14
|
+
if (!provider)
|
|
15
|
+
throw new Error(`Unknown OAuth provider "${id}".`);
|
|
16
|
+
return provider;
|
|
17
|
+
}
|
|
18
|
+
/** The secret-store namespace a provider's tokens live under. */
|
|
19
|
+
export function oauthNamespace(id) {
|
|
20
|
+
return oauthProvider(id).namespace;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../src/infrastructure/oauth/providers.ts"],"names":[],"mappings":"AAUA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAiC;IAC3D,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE;IAClF,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE;CACnF,CAAA;AAED,4CAA4C;AAC5C,MAAM,UAAU,aAAa,CAAC,EAA2B;IACvD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IAC/D,IAAI,CAAC,QAAQ;QACX,MAAM,IAAI,KAAK,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAA;IACpD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,cAAc,CAAC,EAA2B;IACxD,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC,SAAS,CAAA;AACpC,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import type { AbsolutePath, SkillId } from '@braidhq/schema';
|
|
2
2
|
import { type PluginRegistry, SkillManifest, type SkillRegistry, type Workspace } from '@braidhq/core';
|
|
3
|
+
/**
|
|
4
|
+
* Namespace for skills and reference docs shipped by the framework itself.
|
|
5
|
+
* Builtin skills invoke as `braid:<verb>`,
|
|
6
|
+
* and core's shared reference docs mount under the same namespace.
|
|
7
|
+
*/
|
|
8
|
+
export declare const BUILTIN_SKILL_NAMESPACE = "braid";
|
|
3
9
|
export interface FsSkillRegistryOptions {
|
|
4
10
|
readonly builtinSkillsRoot: AbsolutePath;
|
|
5
11
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FsSkillRegistry.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/skill/FsSkillRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAoB,OAAO,EAAe,MAAM,iBAAiB,CAAA;AAK3F,OAAO,EAAiB,KAAK,cAAc,EAAE,aAAa,EAAE,KAAK,aAAa,EAA0B,KAAK,SAAS,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"FsSkillRegistry.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/skill/FsSkillRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAoB,OAAO,EAAe,MAAM,iBAAiB,CAAA;AAK3F,OAAO,EAAiB,KAAK,cAAc,EAAE,aAAa,EAAE,KAAK,aAAa,EAA0B,KAAK,SAAS,EAAE,MAAM,eAAe,CAAA;AAK7I;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,UAAU,CAAA;AAO9C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,iBAAiB,EAAE,YAAY,CAAA;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAA;CACzC;AAED,qBAAa,eAAgB,YAAW,aAAa;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,sBAAsB;IAEtD,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC;IA4B7D,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAKhF,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;YAO3D,cAAc;YA+Bd,gBAAgB;YAuBhB,iBAAiB;YAwBjB,oBAAoB;YA4BpB,WAAW;CAc1B"}
|
|
@@ -6,6 +6,12 @@ import { NotFoundError, SkillManifest, validateSkillStructure } from '@braidhq/c
|
|
|
6
6
|
import { AbsolutePath as AbsolutePathSchema, SkillFrontmatter as SkillFrontmatterSchema, SkillId as SkillIdSchema } from '@braidhq/schema';
|
|
7
7
|
import { parseMarkdownFrontmatter } from '../_shared/frontmatter.js';
|
|
8
8
|
import { workspaceSkillExtensionsDir, workspaceSkillsDir } from '../_shared/paths.js';
|
|
9
|
+
/**
|
|
10
|
+
* Namespace for skills and reference docs shipped by the framework itself.
|
|
11
|
+
* Builtin skills invoke as `braid:<verb>`,
|
|
12
|
+
* and core's shared reference docs mount under the same namespace.
|
|
13
|
+
*/
|
|
14
|
+
export const BUILTIN_SKILL_NAMESPACE = 'braid';
|
|
9
15
|
export class FsSkillRegistry {
|
|
10
16
|
options;
|
|
11
17
|
constructor(options) {
|
|
@@ -58,7 +64,7 @@ export class FsSkillRegistry {
|
|
|
58
64
|
// The directory is the bare verb. Namespace it by origin,
|
|
59
65
|
// builtins under `braid`, workspace skills under `workspace`,
|
|
60
66
|
// so the id matches the plugin the agent binding stages it as.
|
|
61
|
-
const namespace = origin === 'builtin' ?
|
|
67
|
+
const namespace = origin === 'builtin' ? BUILTIN_SKILL_NAMESPACE : 'workspace';
|
|
62
68
|
manifests.push(new SkillManifest({
|
|
63
69
|
id: SkillIdSchema.parse(`${namespace}:${entry.name}`),
|
|
64
70
|
origin,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FsSkillRegistry.js","sourceRoot":"","sources":["../../../src/infrastructure/skill/FsSkillRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,aAAa,EAAuB,aAAa,EAAsB,sBAAsB,EAAkB,MAAM,eAAe,CAAA;AAC7I,OAAO,EAAE,YAAY,IAAI,kBAAkB,EAAE,gBAAgB,IAAI,sBAAsB,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC1I,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"FsSkillRegistry.js","sourceRoot":"","sources":["../../../src/infrastructure/skill/FsSkillRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import type { AgentBinding, RunRepository, SkillEventListener, SkillRegistry, SkillRunner, SkillRunOptions, SkillRunSubscription, Workspace, WorkspaceEventBus } from '@braidhq/core';
|
|
2
|
-
import type { AbsolutePath, AgentBindingDescriptor, SkillId, SkillRunId } from '@braidhq/schema';
|
|
2
|
+
import type { AbsolutePath, AgentBindingDescriptor, SkillId, SkillRunId, SourceRoleDescriptor } from '@braidhq/schema';
|
|
3
3
|
import type { ChildProcess, SpawnOptions } from 'node:child_process';
|
|
4
4
|
export type SpawnFn = (command: string, args: readonly string[], options: SpawnOptions) => ChildProcess;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Reference docs a skill Reads but never invokes,
|
|
7
|
+
* such as core's shared formats or an ontology's concept doc.
|
|
8
|
+
* Each mounts inside its own namespace's bundle, keyed by that namespace alone,
|
|
9
|
+
* so a mount can never be named out of step with its skills.
|
|
9
10
|
*/
|
|
10
11
|
export interface SkillReferenceDir {
|
|
11
|
-
readonly
|
|
12
|
+
readonly skillNamespace: string;
|
|
12
13
|
readonly path: AbsolutePath;
|
|
13
14
|
}
|
|
14
15
|
export interface SubprocessSkillRunnerDeps {
|
|
@@ -26,6 +27,7 @@ export interface SubprocessSkillRunnerDeps {
|
|
|
26
27
|
readonly uvxBin?: string;
|
|
27
28
|
};
|
|
28
29
|
readonly eventBus?: WorkspaceEventBus;
|
|
30
|
+
readonly resolveSourceRoles?: (workspace: Workspace) => readonly SourceRoleDescriptor[];
|
|
29
31
|
}
|
|
30
32
|
export declare class SubprocessSkillRunner implements SkillRunner {
|
|
31
33
|
private readonly deps;
|
|
@@ -33,20 +35,39 @@ export declare class SubprocessSkillRunner implements SkillRunner {
|
|
|
33
35
|
private readonly sessionDirs;
|
|
34
36
|
private readonly subscribers;
|
|
35
37
|
private readonly positions;
|
|
38
|
+
private readonly gatewayReadyBySpec;
|
|
36
39
|
constructor(deps: SubprocessSkillRunnerDeps);
|
|
37
40
|
start(workspace: Workspace, skillId: SkillId, args: string, options?: SkillRunOptions): Promise<SkillRunId>;
|
|
38
41
|
subscribe(runId: SkillRunId, listener: SkillEventListener): SkillRunSubscription;
|
|
39
42
|
isActive(runId: SkillRunId): boolean;
|
|
40
43
|
cancel(runId: SkillRunId): Promise<void>;
|
|
41
44
|
forgetSession(sessionId: string): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Pre-flight the braid-core gateway before an agent runs.
|
|
47
|
+
* Runs `openapi-mcp-gateway --dry-run`, memoised per spec,
|
|
48
|
+
* so only the first run pays it.
|
|
49
|
+
*/
|
|
50
|
+
private ensureGatewayReady;
|
|
51
|
+
private probeGateway;
|
|
42
52
|
private drain;
|
|
43
53
|
private emit;
|
|
44
54
|
private resolveSessionDir;
|
|
45
55
|
private recoverSessionDir;
|
|
46
56
|
private buildSessionDir;
|
|
47
57
|
private skillBundleDir;
|
|
58
|
+
private referenceDir;
|
|
48
59
|
private skillBundleDirsFor;
|
|
49
60
|
private bindingFor;
|
|
61
|
+
/**
|
|
62
|
+
* Absolute paths to the mounted reference dirs,
|
|
63
|
+
* `BRAID_SHARED_REFERENCE` for framework contracts,
|
|
64
|
+
* and `BRAID_ONTOLOGY_REFERENCE` for the active ontology.
|
|
65
|
+
* A variable is set only when that namespace ships reference docs,
|
|
66
|
+
* so a prompt can branch on absence instead of reading a dangling path.
|
|
67
|
+
* Paths derive from the session dir, so a resumed run resolves them unchanged.
|
|
68
|
+
*/
|
|
69
|
+
private referenceEnv;
|
|
70
|
+
private sourceRolesEnv;
|
|
50
71
|
private now;
|
|
51
72
|
}
|
|
52
73
|
//# sourceMappingURL=SubprocessSkillRunner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubprocessSkillRunner.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/skill/SubprocessSkillRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,kBAAkB,EAElB,aAAa,EACb,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,SAAS,EACT,iBAAiB,EAClB,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAA8D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"SubprocessSkillRunner.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/skill/SubprocessSkillRunner.ts"],"names":[],"mappings":"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"}
|