@indemn/cli 1.7.8 → 1.7.10
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/.mcp.json +1 -1
- package/README.md +2 -2
- package/dist/mcp/tool-meta.d.ts.map +1 -1
- package/dist/mcp/tool-meta.js +52 -2
- package/dist/mcp/tool-meta.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +141 -6
- package/dist/mcp/tools.js.map +1 -1
- package/dist/sdk/access.d.ts +4 -0
- package/dist/sdk/access.d.ts.map +1 -1
- package/dist/sdk/access.js +11 -0
- package/dist/sdk/access.js.map +1 -1
- package/dist/sdk/campaigns.d.ts +82 -3
- package/dist/sdk/campaigns.d.ts.map +1 -1
- package/dist/sdk/campaigns.js +106 -4
- package/dist/sdk/campaigns.js.map +1 -1
- package/dist/sdk/orgs.d.ts +16 -0
- package/dist/sdk/orgs.d.ts.map +1 -1
- package/dist/sdk/orgs.js +30 -0
- package/dist/sdk/orgs.js.map +1 -1
- package/package.json +1 -1
- package/src/mcp/tool-meta.ts +54 -2
- package/src/mcp/tools.ts +181 -7
- package/src/sdk/access.ts +12 -0
- package/src/sdk/campaigns.ts +125 -4
- package/src/sdk/orgs.ts +37 -0
- package/test/mcp/__snapshots__/tools-snapshot.test.ts.snap +8 -0
- package/test/mcp/access.test.ts +18 -0
- package/test/mcp/campaigns.test.ts +165 -0
- package/test/mcp/tools-snapshot.test.ts +2 -2
- package/test/sdk/campaigns.test.ts +76 -18
- package/test/sdk/orgs.test.ts +31 -0
package/dist/sdk/access.d.ts
CHANGED
|
@@ -51,6 +51,10 @@ export declare function refreshAccess(client: IndemnClient): Promise<Access | nu
|
|
|
51
51
|
export declare function usableSomewhere(tool: string, access: Access | null, onlyOrgId?: string): boolean;
|
|
52
52
|
/** The person's role in an org, for messages ("agent in Acme"). */
|
|
53
53
|
export declare function roleIn(access: Access | null, orgId: string | undefined): string | null;
|
|
54
|
+
/** The org's project where the person can invite people: copilot's invite route needs owner or admin there. */
|
|
55
|
+
export declare function inviteProject(access: Access | null, orgId: string): AccessProject | undefined;
|
|
56
|
+
/** Why the person can't invite people to this org, or null (also when access is unknown: the server decides). */
|
|
57
|
+
export declare function inviteDenial(access: Access | null, orgId: string | undefined): string | null;
|
|
54
58
|
/**
|
|
55
59
|
* For org-scoped requirements: why this org can't be used, or null. Project-scoped
|
|
56
60
|
* requirements are decided by the server (the project comes from the agent).
|
package/dist/sdk/access.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../src/sdk/access.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACzD,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,KAAK,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;AAExC,6GAA6G;AAC7G,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAcvF,CAAC;AAIH,yGAAyG;AACzG,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAKlE;AAiBD,kDAAkD;AAClD,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWhF;AAMD,8FAA8F;AAC9F,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAOhG;AAED,mEAAmE;AACnE,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAKtF;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAgBvG"}
|
|
1
|
+
{"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../src/sdk/access.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACzD,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,KAAK,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;AAExC,6GAA6G;AAC7G,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAcvF,CAAC;AAIH,yGAAyG;AACzG,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAKlE;AAiBD,kDAAkD;AAClD,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWhF;AAMD,8FAA8F;AAC9F,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAOhG;AAED,mEAAmE;AACnE,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAKtF;AAED,+GAA+G;AAC/G,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAE7F;AAED,iHAAiH;AACjH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAI5F;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAgBvG"}
|
package/dist/sdk/access.js
CHANGED
|
@@ -86,6 +86,17 @@ export function roleIn(access, orgId) {
|
|
|
86
86
|
return null;
|
|
87
87
|
return `${org.role ?? 'member'} in ${org.org_name}`;
|
|
88
88
|
}
|
|
89
|
+
/** The org's project where the person can invite people: copilot's invite route needs owner or admin there. */
|
|
90
|
+
export function inviteProject(access, orgId) {
|
|
91
|
+
return access?.orgs.find((o) => o.org_id === orgId)?.projects.find((p) => p.role === 'owner' || p.role === 'admin');
|
|
92
|
+
}
|
|
93
|
+
/** Why the person can't invite people to this org, or null (also when access is unknown: the server decides). */
|
|
94
|
+
export function inviteDenial(access, orgId) {
|
|
95
|
+
const org = orgId ? access?.orgs.find((o) => o.org_id === orgId) : undefined;
|
|
96
|
+
if (!org || inviteProject(access, org.org_id))
|
|
97
|
+
return null;
|
|
98
|
+
return `Only owners and admins can invite people, and your role in ${org.org_name} is ${org.role ?? 'member'}.`;
|
|
99
|
+
}
|
|
89
100
|
/**
|
|
90
101
|
* For org-scoped requirements: why this org can't be used, or null. Project-scoped
|
|
91
102
|
* requirements are decided by the server (the project comes from the agent).
|
package/dist/sdk/access.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access.js","sourceRoot":"","sources":["../../src/sdk/access.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"access.js","sourceRoot":"","sources":["../../src/sdk/access.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAmC3C,6GAA6G;AAC7G,MAAM,CAAC,MAAM,aAAa,GAAmE,MAAM,CAAC,MAAM,CAAC;IACzG,kBAAkB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,oBAAoB,EAAE;IACvE,sBAAsB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,oBAAoB,EAAE;IAC3E,gBAAgB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,EAAE;IACxE,eAAe,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,EAAE;IACvE,sBAAsB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,yBAAyB,EAAE;IACnF,YAAY,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE;IACrD,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE;IACnD,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE;IACtD,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE;IACtD,cAAc,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE;IACvD,iBAAiB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE;IAC1D,gBAAgB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE;IACzD,kBAAkB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE;CAC5D,CAAC,CAAC;AAEH,IAAI,IAAI,GAAkB,IAAI,CAAC;AAE/B,yGAAyG;AACzG,MAAM,UAAU,aAAa,CAAC,MAAqB;IACjD,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACtB,wGAAwG;IACxG,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC;IACtE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAChF,CAAC;AAED,qGAAqG;AACrG,SAAS,SAAS,CAAC,GAAW;IAC5B,MAAM,OAAO,GAAG,CAAC,CAAU,EAAY,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACxH,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD,MAAM,CAAC,CAAC,CAAC,EAAkB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC;SACzE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,GAAG,CAAC;QACJ,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;QACrC,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;aACpD,MAAM,CAAC,CAAC,EAAE,EAAuB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,UAAU,KAAK,QAAQ,CAAC;aACrF,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;KACpE,CAAC,CAAC,CAAC;IACN,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;AAC3D,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,WAAW;IACzB,IAAI,GAAG,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAoB;IACtD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAS,iBAAiB,CAAC,CAAC;QAC/D,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAClD,MAAM,OAAO,GAAW,EAAE,GAAG,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QAC5F,IAAI,GAAG,OAAO,CAAC;QACf,IAAI,MAAM,CAAC,aAAa,EAAE,EAAE,MAAM,KAAK,QAAQ;YAAE,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9F,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,MAAc,EAAE,SAAkB;IACpD,OAAO,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AACrF,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,MAAqB,EAAE,SAAkB;IACrF,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChF,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5F,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,MAAM,CAAC,MAAqB,EAAE,KAAyB;IACrE,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;IACxD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,QAAQ,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACtD,CAAC;AAED,+GAA+G;AAC/G,MAAM,UAAU,aAAa,CAAC,MAAqB,EAAE,KAAa;IAChE,OAAO,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;AACtH,CAAC;AAED,iHAAiH;AACjH,MAAM,UAAU,YAAY,CAAC,MAAqB,EAAE,KAAyB;IAC3E,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,IAAI,CAAC,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,OAAO,8DAA8D,GAAG,CAAC,QAAQ,OAAO,GAAG,CAAC,IAAI,IAAI,QAAQ,GAAG,CAAC;AAClH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,MAAqB,EAAE,KAAyB;IACtF,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC9D,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QAC1B,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/D,OAAO,IAAI,CAAC,UAAU,KAAK,oBAAoB;YAC7C,CAAC,CAAC,mEAAmE;YACrE,CAAC,CAAC,gCAAgC,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;IACxD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC,CAAC,yCAAyC;IAChE,IAAI,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,OAAO,IAAI,CAAC,UAAU,KAAK,SAAS;QAClC,CAAC,CAAC,iCAAiC,GAAG,CAAC,QAAQ,GAAG;QAClD,CAAC,CAAC,cAAc,GAAG,CAAC,IAAI,IAAI,QAAQ,OAAO,GAAG,CAAC,QAAQ,wBAAwB,CAAC;AACpF,CAAC"}
|
package/dist/sdk/campaigns.d.ts
CHANGED
|
@@ -1,13 +1,29 @@
|
|
|
1
1
|
import type { IndemnClient } from './client.js';
|
|
2
|
+
export type CampaignStatus = 'draft' | 'running' | 'paused' | 'archived';
|
|
3
|
+
/** A touchpoint in a campaign's draft, found by its key. */
|
|
4
|
+
export type Touchpoint = {
|
|
5
|
+
key: string;
|
|
6
|
+
} & Record<string, unknown>;
|
|
7
|
+
type Draft = {
|
|
8
|
+
audience?: unknown;
|
|
9
|
+
touchpoints?: Touchpoint[];
|
|
10
|
+
escalation_policy?: unknown;
|
|
11
|
+
channel_policy?: unknown;
|
|
12
|
+
};
|
|
13
|
+
type Envelope = {
|
|
14
|
+
total?: number;
|
|
15
|
+
items?: Array<Record<string, unknown>>;
|
|
16
|
+
};
|
|
2
17
|
/**
|
|
3
|
-
* Campaigns
|
|
4
|
-
*
|
|
5
|
-
*
|
|
18
|
+
* Campaigns through copilot's proxy to the campaigns service: reads, and
|
|
19
|
+
* writes to configuration only (WRITABLE). The CLI never sends a
|
|
20
|
+
* communication, runs a book sync or deletes; those act on real customers.
|
|
6
21
|
*/
|
|
7
22
|
export declare class CampaignsSDK {
|
|
8
23
|
private client;
|
|
9
24
|
constructor(client: IndemnClient);
|
|
10
25
|
private read;
|
|
26
|
+
private write;
|
|
11
27
|
list(filter?: {
|
|
12
28
|
status?: string;
|
|
13
29
|
solutionId?: string;
|
|
@@ -31,5 +47,68 @@ export declare class CampaignsSDK {
|
|
|
31
47
|
/** A template; with versions: true, its versions (where subject and body live). */
|
|
32
48
|
template(id: string, versions?: boolean): Promise<unknown>;
|
|
33
49
|
templateSkills(solutionId?: string): Promise<unknown>;
|
|
50
|
+
templateSkill(id: string): Promise<{
|
|
51
|
+
name?: string;
|
|
52
|
+
instructions?: string;
|
|
53
|
+
}>;
|
|
54
|
+
books(filter?: {
|
|
55
|
+
solutionId?: string;
|
|
56
|
+
limit?: number;
|
|
57
|
+
}): Promise<Envelope>;
|
|
58
|
+
book(id: string): Promise<{
|
|
59
|
+
name?: string;
|
|
60
|
+
}>;
|
|
61
|
+
createCampaign(input: {
|
|
62
|
+
solution_id: string;
|
|
63
|
+
book_id: string;
|
|
64
|
+
name: string;
|
|
65
|
+
campaign_type: string;
|
|
66
|
+
entry?: string;
|
|
67
|
+
closes?: string;
|
|
68
|
+
}): Promise<{
|
|
69
|
+
id: string;
|
|
70
|
+
}>;
|
|
71
|
+
/** Change parts of the draft; the rest of it (its touchpoints among it) stays as it is. */
|
|
72
|
+
updateDraft(id: string, parts: Omit<Draft, 'touchpoints'>): Promise<Draft>;
|
|
73
|
+
/** Add a touchpoint, or change the one with its key (only the fields given). A new one drafts unless told to
|
|
74
|
+
* send; a template given without a version is pinned to its latest. */
|
|
75
|
+
setTouchpoint(id: string, touchpoint: Touchpoint): Promise<Draft>;
|
|
76
|
+
publish(id: string, changeSummary?: string): Promise<unknown>;
|
|
77
|
+
setStatus(id: string, status: CampaignStatus): Promise<unknown>;
|
|
78
|
+
createTemplate(input: Record<string, unknown> & {
|
|
79
|
+
uses_variables?: string[];
|
|
80
|
+
}): Promise<unknown>;
|
|
81
|
+
private latestTemplateVersion;
|
|
82
|
+
/** A new version of the template: its latest one with the changes given. */
|
|
83
|
+
updateTemplate(id: string, changes: Record<string, unknown> & {
|
|
84
|
+
uses_variables?: string[];
|
|
85
|
+
}): Promise<unknown>;
|
|
86
|
+
createTemplateSkill(input: {
|
|
87
|
+
solution_id?: string;
|
|
88
|
+
key: string;
|
|
89
|
+
name: string;
|
|
90
|
+
instructions: string;
|
|
91
|
+
}): Promise<unknown>;
|
|
92
|
+
updateTemplateSkill(id: string, changes: {
|
|
93
|
+
name?: string;
|
|
94
|
+
instructions?: string;
|
|
95
|
+
}): Promise<unknown>;
|
|
96
|
+
createBook(input: {
|
|
97
|
+
solution_id: string;
|
|
98
|
+
name: string;
|
|
99
|
+
schema_id?: string;
|
|
100
|
+
source?: unknown;
|
|
101
|
+
}): Promise<{
|
|
102
|
+
id: string;
|
|
103
|
+
}>;
|
|
104
|
+
/** Change the parts of a book that are given, each its own call in the service. Keys are the book's schema
|
|
105
|
+
* keys; identity keys change only while the book has no records. */
|
|
106
|
+
updateBook(id: string, changes: {
|
|
107
|
+
source?: unknown;
|
|
108
|
+
field_map?: unknown[];
|
|
109
|
+
identity_keys?: string[];
|
|
110
|
+
display?: unknown;
|
|
111
|
+
}): Promise<unknown>;
|
|
34
112
|
}
|
|
113
|
+
export {};
|
|
35
114
|
//# sourceMappingURL=campaigns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"campaigns.d.ts","sourceRoot":"","sources":["../../src/sdk/campaigns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"campaigns.d.ts","sourceRoot":"","sources":["../../src/sdk/campaigns.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/campaigns.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CliError, EXIT } from '../core/runtime.js';
|
|
2
|
-
/** Paths of the campaigns service the CLI may read. Everything else
|
|
2
|
+
/** Paths of the campaigns service the CLI may read. Everything else is refused. */
|
|
3
3
|
const READABLE = [
|
|
4
4
|
/^\/campaigns$/,
|
|
5
5
|
/^\/campaigns\/[\w-]+$/,
|
|
@@ -9,11 +9,34 @@ const READABLE = [
|
|
|
9
9
|
/^\/templates\/[\w-]+\/versions$/,
|
|
10
10
|
/^\/template-skills$/,
|
|
11
11
|
/^\/template-skills\/[\w-]+$/,
|
|
12
|
+
/^\/books$/,
|
|
13
|
+
/^\/books\/[\w-]+$/,
|
|
12
14
|
];
|
|
15
|
+
/** What the CLI may change: campaigns and their drafts (touchpoints live there), publish and status, templates
|
|
16
|
+
* (each change a new version), template skills and books. Never sending or resolving anything, book runs,
|
|
17
|
+
* uploads, test ticks or enrollments, and no deletes: those act on real customers or cannot be undone. */
|
|
18
|
+
const WRITABLE = [
|
|
19
|
+
['POST', /^\/campaigns$/],
|
|
20
|
+
['PUT', /^\/campaigns\/[\w-]+\/draft$/],
|
|
21
|
+
['POST', /^\/campaigns\/[\w-]+\/(publish|status)$/],
|
|
22
|
+
['POST', /^\/templates$/],
|
|
23
|
+
['POST', /^\/templates\/[\w-]+\/versions$/],
|
|
24
|
+
['POST', /^\/template-skills$/],
|
|
25
|
+
['PUT', /^\/template-skills\/[\w-]+$/],
|
|
26
|
+
['POST', /^\/books$/],
|
|
27
|
+
['PATCH', /^\/books\/[\w-]+\/source$/],
|
|
28
|
+
['PUT', /^\/books\/[\w-]+\/(field-map|identity-keys|display)$/],
|
|
29
|
+
];
|
|
30
|
+
// A template version is whole: a change starts from the latest version's content.
|
|
31
|
+
const TEMPLATE_CONTENT = ['subject', 'body', 'html', 'uses_variables', 'selection_tags', 'skills', 'batch_row'];
|
|
32
|
+
const given = (o) => Object.fromEntries(Object.entries(o).filter(([, v]) => v !== undefined));
|
|
33
|
+
// Templates declare the variables they read as {key, required, example}; given as keys, a key the template already
|
|
34
|
+
// declares keeps its entry.
|
|
35
|
+
const declare = (keys, current = []) => keys?.map((key) => current.find((v) => v.key === key) ?? { key });
|
|
13
36
|
/**
|
|
14
|
-
* Campaigns
|
|
15
|
-
*
|
|
16
|
-
*
|
|
37
|
+
* Campaigns through copilot's proxy to the campaigns service: reads, and
|
|
38
|
+
* writes to configuration only (WRITABLE). The CLI never sends a
|
|
39
|
+
* communication, runs a book sync or deletes; those act on real customers.
|
|
17
40
|
*/
|
|
18
41
|
export class CampaignsSDK {
|
|
19
42
|
client;
|
|
@@ -25,6 +48,11 @@ export class CampaignsSDK {
|
|
|
25
48
|
throw new CliError(`Campaigns path ${path} is not readable from the CLI.`, EXIT.NEEDS_INPUT);
|
|
26
49
|
return this.client.copilotGet(`/organization/:org_id/campaigns-service${path}`, query);
|
|
27
50
|
}
|
|
51
|
+
async write(method, path, body) {
|
|
52
|
+
if (!WRITABLE.some(([m, r]) => m === method && r.test(path)))
|
|
53
|
+
throw new CliError(`Campaigns ${method} ${path} is not allowed from the CLI.`, EXIT.NEEDS_INPUT);
|
|
54
|
+
return this.client.copilotRequestRaw(method, `/organization/:org_id/campaigns-service${path}`, body);
|
|
55
|
+
}
|
|
28
56
|
list(filter = {}) {
|
|
29
57
|
const q = { limit: String(Math.min(filter.limit ?? 50, 500)), skip: String(filter.skip ?? 0) };
|
|
30
58
|
if (filter.status)
|
|
@@ -55,5 +83,79 @@ export class CampaignsSDK {
|
|
|
55
83
|
templateSkills(solutionId) {
|
|
56
84
|
return this.read('/template-skills', solutionId ? { solution_id: solutionId } : undefined);
|
|
57
85
|
}
|
|
86
|
+
templateSkill(id) {
|
|
87
|
+
return this.read(`/template-skills/${id}`);
|
|
88
|
+
}
|
|
89
|
+
books(filter = {}) {
|
|
90
|
+
const q = { limit: String(Math.min(filter.limit ?? 50, 200)) }; // the service allows 200
|
|
91
|
+
if (filter.solutionId)
|
|
92
|
+
q.solution_id = filter.solutionId;
|
|
93
|
+
return this.read('/books', q);
|
|
94
|
+
}
|
|
95
|
+
book(id) {
|
|
96
|
+
return this.read(`/books/${id}`);
|
|
97
|
+
}
|
|
98
|
+
createCampaign(input) {
|
|
99
|
+
return this.write('POST', '/campaigns', given(input));
|
|
100
|
+
}
|
|
101
|
+
/** Change parts of the draft; the rest of it (its touchpoints among it) stays as it is. */
|
|
102
|
+
async updateDraft(id, parts) {
|
|
103
|
+
const { draft } = await this.read(`/campaigns/${id}`);
|
|
104
|
+
return this.write('PUT', `/campaigns/${id}/draft`, { ...draft, ...given(parts) });
|
|
105
|
+
}
|
|
106
|
+
/** Add a touchpoint, or change the one with its key (only the fields given). A new one drafts unless told to
|
|
107
|
+
* send; a template given without a version is pinned to its latest. */
|
|
108
|
+
async setTouchpoint(id, touchpoint) {
|
|
109
|
+
const { draft } = await this.read(`/campaigns/${id}`);
|
|
110
|
+
const current = draft?.touchpoints ?? [];
|
|
111
|
+
const existing = current.find((t) => t.key === touchpoint.key);
|
|
112
|
+
const tp = { ...(existing ?? { terminal_action: 'draft' }), ...given(touchpoint), key: touchpoint.key };
|
|
113
|
+
if (typeof touchpoint.template_id === 'string' && touchpoint.template_version_n === undefined) {
|
|
114
|
+
tp.template_version_n = Number((await this.latestTemplateVersion(touchpoint.template_id))?.version_n ?? 1);
|
|
115
|
+
}
|
|
116
|
+
const touchpoints = existing ? current.map((t) => (t.key === tp.key ? tp : t)) : [...current, tp];
|
|
117
|
+
return this.write('PUT', `/campaigns/${id}/draft`, { ...draft, touchpoints });
|
|
118
|
+
}
|
|
119
|
+
publish(id, changeSummary) {
|
|
120
|
+
return this.write('POST', `/campaigns/${id}/publish`, { change_summary: changeSummary ?? '' });
|
|
121
|
+
}
|
|
122
|
+
setStatus(id, status) {
|
|
123
|
+
return this.write('POST', `/campaigns/${id}/status`, { status });
|
|
124
|
+
}
|
|
125
|
+
createTemplate(input) {
|
|
126
|
+
return this.write('POST', '/templates', given({ ...input, uses_variables: declare(input.uses_variables) }));
|
|
127
|
+
}
|
|
128
|
+
async latestTemplateVersion(id) {
|
|
129
|
+
return (await this.read(`/templates/${id}/versions`)).items?.[0]; // newest first
|
|
130
|
+
}
|
|
131
|
+
/** A new version of the template: its latest one with the changes given. */
|
|
132
|
+
async updateTemplate(id, changes) {
|
|
133
|
+
const latest = (await this.latestTemplateVersion(id)) ?? {};
|
|
134
|
+
const kept = Object.fromEntries(TEMPLATE_CONTENT.filter((k) => k in latest).map((k) => [k, latest[k]]));
|
|
135
|
+
return this.write('POST', `/templates/${id}/versions`, { ...kept, ...given({ ...changes, uses_variables: declare(changes.uses_variables, latest.uses_variables) }) });
|
|
136
|
+
}
|
|
137
|
+
createTemplateSkill(input) {
|
|
138
|
+
return this.write('POST', '/template-skills', input);
|
|
139
|
+
}
|
|
140
|
+
async updateTemplateSkill(id, changes) {
|
|
141
|
+
const skill = await this.templateSkill(id);
|
|
142
|
+
return this.write('PUT', `/template-skills/${id}`, { name: skill.name, instructions: skill.instructions, ...given(changes) });
|
|
143
|
+
}
|
|
144
|
+
createBook(input) {
|
|
145
|
+
return this.write('POST', '/books', given(input));
|
|
146
|
+
}
|
|
147
|
+
/** Change the parts of a book that are given, each its own call in the service. Keys are the book's schema
|
|
148
|
+
* keys; identity keys change only while the book has no records. */
|
|
149
|
+
async updateBook(id, changes) {
|
|
150
|
+
if (changes.source !== undefined)
|
|
151
|
+
await this.write('PATCH', `/books/${id}/source`, { source: changes.source });
|
|
152
|
+
if (changes.field_map !== undefined)
|
|
153
|
+
await this.write('PUT', `/books/${id}/field-map`, { field_map: changes.field_map });
|
|
154
|
+
if (changes.identity_keys !== undefined)
|
|
155
|
+
await this.write('PUT', `/books/${id}/identity-keys`, { identity_keys: changes.identity_keys });
|
|
156
|
+
if (changes.display !== undefined)
|
|
157
|
+
await this.write('PUT', `/books/${id}/display`, { display: changes.display });
|
|
158
|
+
return this.book(id);
|
|
159
|
+
}
|
|
58
160
|
}
|
|
59
161
|
//# sourceMappingURL=campaigns.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"campaigns.js","sourceRoot":"","sources":["../../src/sdk/campaigns.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAEpD,
|
|
1
|
+
{"version":3,"file":"campaigns.js","sourceRoot":"","sources":["../../src/sdk/campaigns.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/orgs.d.ts
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { IndemnClient } from './client.js';
|
|
2
2
|
import type { Channel, OrgMember, OrgSummary } from './types.js';
|
|
3
|
+
/** The roles the dashboard's Invite user page offers. copilot saves any role it is sent, so never owner here. */
|
|
4
|
+
export declare const INVITE_ROLES: readonly ["admin", "agent", "member"];
|
|
5
|
+
export type InviteRole = (typeof INVITE_ROLES)[number];
|
|
6
|
+
export interface InviteResult {
|
|
7
|
+
email: string;
|
|
8
|
+
role: InviteRole;
|
|
9
|
+
/** invited: no Indemn account yet, a sign-up email went out; added: an existing account joined now. The others changed nothing. */
|
|
10
|
+
outcome: 'invited' | 'added' | 'already_invited' | 'already_member';
|
|
11
|
+
message: string;
|
|
12
|
+
}
|
|
3
13
|
export interface SandboxOrg {
|
|
4
14
|
organization_id: string;
|
|
5
15
|
name: string;
|
|
@@ -14,6 +24,12 @@ export declare class OrgsSDK {
|
|
|
14
24
|
listOrganizations(): Promise<OrgSummary[]>;
|
|
15
25
|
/** People with owner, admin or agent roles in the org, one row per person. */
|
|
16
26
|
listMembers(): Promise<OrgMember[]>;
|
|
27
|
+
/**
|
|
28
|
+
* Invite someone to the org's project, as the dashboard's Invite user page does (copilot allows owners and
|
|
29
|
+
* admins only). A new email gets a sign-up invitation; an existing Indemn account is added at once and told
|
|
30
|
+
* by email. Already invited or already a member: nothing is sent, and the result says so.
|
|
31
|
+
*/
|
|
32
|
+
inviteMember(projectId: string, email: string, role: InviteRole): Promise<InviteResult>;
|
|
17
33
|
/**
|
|
18
34
|
* A sandbox organization for a prospect. Only the Indemn support account may create one (copilot
|
|
19
35
|
* refuses anyone else), and copilot always puts it on the sandbox plan set for the platform.
|
package/dist/sdk/orgs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orgs.d.ts","sourceRoot":"","sources":["../../src/sdk/orgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AASjE,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,OAAO;IACN,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAExC,+FAA+F;IACzF,iBAAiB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAIhD,8EAA8E;IACxE,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAkCzC;;;OAGG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAetD,+DAA+D;IACzD,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CAIzC"}
|
|
1
|
+
{"version":3,"file":"orgs.d.ts","sourceRoot":"","sources":["../../src/sdk/orgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AASjE,iHAAiH;AACjH,eAAO,MAAM,YAAY,uCAAwC,CAAC;AAClE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,mIAAmI;IACnI,OAAO,EAAE,SAAS,GAAG,OAAO,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;IACpE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,OAAO;IACN,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAExC,+FAA+F;IACzF,iBAAiB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAIhD,8EAA8E;IACxE,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAkCzC;;;;OAIG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAoB7F;;;OAGG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAetD,+DAA+D;IACzD,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CAIzC"}
|
package/dist/sdk/orgs.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** The roles the dashboard's Invite user page offers. copilot saves any role it is sent, so never owner here. */
|
|
2
|
+
export const INVITE_ROLES = ['admin', 'agent', 'member'];
|
|
1
3
|
export class OrgsSDK {
|
|
2
4
|
client;
|
|
3
5
|
constructor(client) {
|
|
@@ -45,6 +47,34 @@ export class OrgsSDK {
|
|
|
45
47
|
}
|
|
46
48
|
return [...byUser.values()];
|
|
47
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Invite someone to the org's project, as the dashboard's Invite user page does (copilot allows owners and
|
|
52
|
+
* admins only). A new email gets a sign-up invitation; an existing Indemn account is added at once and told
|
|
53
|
+
* by email. Already invited or already a member: nothing is sent, and the result says so.
|
|
54
|
+
*/
|
|
55
|
+
async inviteMember(projectId, email, role) {
|
|
56
|
+
const address = email.trim().toLowerCase();
|
|
57
|
+
const result = (outcome, message) => ({ email: address, role, outcome, message });
|
|
58
|
+
try {
|
|
59
|
+
const res = await this.client.copilotPost(`/${projectId}/project_users/invite`, {
|
|
60
|
+
email: address, role, user_available: false, id_organization: await this.client.currentOrgId(),
|
|
61
|
+
});
|
|
62
|
+
return res?.pendingInvitation
|
|
63
|
+
? result('invited', `Invitation sent to ${address}. They join as ${role} once they sign up from the email.`)
|
|
64
|
+
: result('added', `${address} already had an Indemn account and is now in the organization as ${role}. They were told by email.`);
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
// copilot answers these with 200 {success:false} and 500/403 with a code; the dashboard shows them as messages.
|
|
68
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
69
|
+
if (/Pending Invitation already exist/i.test(message))
|
|
70
|
+
return result('already_invited', `${address} already has a pending invitation. Nothing was sent again.`);
|
|
71
|
+
if (/already a member/i.test(message))
|
|
72
|
+
return result('already_member', `${address} is already a member of the organization. Nothing was changed.`);
|
|
73
|
+
if (/invite oneself/i.test(message))
|
|
74
|
+
throw new Error('You can\'t invite yourself. Nothing was sent.');
|
|
75
|
+
throw err;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
48
78
|
/**
|
|
49
79
|
* A sandbox organization for a prospect. Only the Indemn support account may create one (copilot
|
|
50
80
|
* refuses anyone else), and copilot always puts it on the sandbox plan set for the platform.
|
package/dist/sdk/orgs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orgs.js","sourceRoot":"","sources":["../../src/sdk/orgs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"orgs.js","sourceRoot":"","sources":["../../src/sdk/orgs.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/mcp/tool-meta.ts
CHANGED
|
@@ -29,6 +29,17 @@ const write = (title: string, extra: Partial<ToolAnnotations> = {}): ToolMeta =>
|
|
|
29
29
|
annotations: { title, readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false, ...extra },
|
|
30
30
|
});
|
|
31
31
|
|
|
32
|
+
/** The parts a call changes, in words: "audience, channel policy". */
|
|
33
|
+
const parts = (a: Record<string, unknown>, keys: string[]) => keys.filter((k) => a[k] !== undefined && a[k] !== '').map((k) => k.replace(/_/g, ' ')).join(', ');
|
|
34
|
+
|
|
35
|
+
/** A book change with its new values, so the person sees what they approve: "field map to Company → account.name". */
|
|
36
|
+
const bookChanges = (a: Record<string, any>) => [
|
|
37
|
+
a.source !== undefined && `source to ${a.source?.kind ?? JSON.stringify(a.source)}`,
|
|
38
|
+
Array.isArray(a.field_map) && `field map to ${a.field_map.map((m: { source_path?: string; schema_key?: string }) => `${m.source_path} → ${m.schema_key}`).join(', ')}`,
|
|
39
|
+
Array.isArray(a.identity_keys) && `identity keys to ${a.identity_keys.join(', ')}`,
|
|
40
|
+
a.display && `display to ${['primary', 'secondary'].filter((k) => Array.isArray(a.display[k])).map((k) => `${k} ${a.display[k].join(', ')}`).join('; ')}`,
|
|
41
|
+
].filter(Boolean).join('; ');
|
|
42
|
+
|
|
32
43
|
/** Overwrites or removes something that cannot be restored from the tool itself. */
|
|
33
44
|
const destroy = (title: string, extra: Partial<ToolAnnotations> = {}): ToolMeta => ({
|
|
34
45
|
title,
|
|
@@ -46,6 +57,11 @@ export const TOOL_META: Record<string, ToolMeta> = {
|
|
|
46
57
|
describe: (a) => `This will create a new organization "${a.name}" on the sandbox plan (its trial, then the plan's monthly price, invoiced to the support account).`,
|
|
47
58
|
},
|
|
48
59
|
list_org_members: { ...read('List organization members'), paginate: true },
|
|
60
|
+
invite_org_member: {
|
|
61
|
+
...write('Invite organization member'),
|
|
62
|
+
guard: true,
|
|
63
|
+
describe: (a) => `This will invite ${a.email} to the organization as ${({ admin: 'Administrator', agent: 'Agent', member: 'Member' } as Record<string, string>)[String(a.role)] ?? a.role}. Without an Indemn account they get an email to sign up; with one they join at once.`,
|
|
64
|
+
},
|
|
49
65
|
list_channels: read('List channels'),
|
|
50
66
|
|
|
51
67
|
// Agents
|
|
@@ -217,8 +233,44 @@ export const TOOL_META: Record<string, ToolMeta> = {
|
|
|
217
233
|
// Billing (read-only)
|
|
218
234
|
get_billing: read('Billing status, invoices, usage or plans'),
|
|
219
235
|
|
|
220
|
-
// Campaigns
|
|
221
|
-
get_campaigns: read('Read campaigns and
|
|
236
|
+
// Campaigns: each change is approved on a card; nothing here sends a message, and nothing deletes.
|
|
237
|
+
get_campaigns: read('Read campaigns, templates and books'),
|
|
238
|
+
save_campaign: {
|
|
239
|
+
...write('Create or change campaign'), guard: true,
|
|
240
|
+
describe: (a) => a.campaign_id
|
|
241
|
+
? `This will change the ${parts(a, ['audience', 'escalation_policy', 'channel_policy'])} in the draft of campaign ${a.campaign_id} (it takes effect when the campaign is published).`
|
|
242
|
+
: `This will create campaign "${a.name}" as a draft; it sends nothing until it is published and started.`,
|
|
243
|
+
},
|
|
244
|
+
set_touchpoint: {
|
|
245
|
+
...write('Add or change touchpoint', { idempotentHint: true }), guard: true,
|
|
246
|
+
describe: (a) => `This will add or change touchpoint "${a.key}" in the draft of campaign ${a.campaign_id}${a.channel ? ` (${a.channel})` : ''}${a.terminal_action === 'send' ? '. It is set to SEND to customers directly once the campaign is published and running' : ''}.`,
|
|
247
|
+
},
|
|
248
|
+
publish_campaign: { ...write('Publish campaign'), guard: true, describe: (a) => `This will publish the draft of campaign ${a.campaign_id} as its next version; if it is running, it uses it from its next run.` },
|
|
249
|
+
set_campaign_status: {
|
|
250
|
+
...write('Start, pause or archive campaign'), guard: true,
|
|
251
|
+
describe: (a) => a.status === 'running'
|
|
252
|
+
? `This will START campaign ${a.campaign_id}: it enrols the matching records of its book and runs its touchpoints (touchpoints set to send reach real customers).`
|
|
253
|
+
: a.status === 'archived' ? `This will archive campaign ${a.campaign_id} for good: it cannot be started again.`
|
|
254
|
+
: `This will pause campaign ${a.campaign_id}: its touchpoints stop until it is started again.`,
|
|
255
|
+
},
|
|
256
|
+
save_campaign_template: {
|
|
257
|
+
...write('Create or change campaign template'), guard: true,
|
|
258
|
+
describe: (a) => a.template_id
|
|
259
|
+
? `This will save a new version of template ${a.template_id} (${parts(a, ['subject', 'body', 'html', 'uses_variables', 'skills', 'selection_tags'])}); touchpoints keep the version they are set to until it is set again.`
|
|
260
|
+
: `This will create ${a.channel} template "${a.name}".`,
|
|
261
|
+
},
|
|
262
|
+
save_template_skill: {
|
|
263
|
+
...write('Create or change template skill'), guard: true,
|
|
264
|
+
describe: (a) => a.template_skill_id
|
|
265
|
+
? `This will change template skill ${a.template_skill_id} (${parts(a, ['name', 'instructions'])}); templates using it write with it from their campaigns' next run.`
|
|
266
|
+
: `This will create template skill "${a.name}".`,
|
|
267
|
+
},
|
|
268
|
+
save_book: {
|
|
269
|
+
...write('Create or change book'), guard: true,
|
|
270
|
+
describe: (a) => a.book_id
|
|
271
|
+
? `This will change book ${a.book_id}: ${bookChanges(a)}.`
|
|
272
|
+
: `This will create book "${a.name}" for this solution.`,
|
|
273
|
+
},
|
|
222
274
|
|
|
223
275
|
// V2 platform and Jarvis (Darwin)
|
|
224
276
|
platform_list: read('List V2 platform items'),
|