@scribed/cli 0.1.35 → 0.1.36
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/dist/index.js +14 -9
- package/dist/mcp/server.js +13 -8
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -53789,7 +53789,7 @@ var program = new Command;
|
|
|
53789
53789
|
// package.json
|
|
53790
53790
|
var package_default = {
|
|
53791
53791
|
name: "@scribed/cli",
|
|
53792
|
-
version: "0.1.
|
|
53792
|
+
version: "0.1.36",
|
|
53793
53793
|
description: "Command-line client + MCP server for Scribed — CRM records, phone + texting, inbox, calendar + booking, transcriptions, HR, Vault, automations, Creative Studio, and Documents, derived from the scribed-agent tool catalog.",
|
|
53794
53794
|
type: "module",
|
|
53795
53795
|
license: "SEE LICENSE IN LICENSE",
|
|
@@ -79026,7 +79026,7 @@ class StreamableHTTPClientTransport {
|
|
|
79026
79026
|
// package.json
|
|
79027
79027
|
var package_default2 = {
|
|
79028
79028
|
name: "@scribed/cli",
|
|
79029
|
-
version: "0.1.
|
|
79029
|
+
version: "0.1.36",
|
|
79030
79030
|
description: "Command-line client + MCP server for Scribed — CRM records, phone + texting, inbox, calendar + booking, transcriptions, HR, Vault, automations, Creative Studio, and Documents, derived from the scribed-agent tool catalog.",
|
|
79031
79031
|
type: "module",
|
|
79032
79032
|
license: "SEE LICENSE IN LICENSE",
|
|
@@ -81450,6 +81450,9 @@ function buildProductStockTools({ workspaceRestTool }) {
|
|
|
81450
81450
|
// ../scribed-agent/src/agent-member-username.ts
|
|
81451
81451
|
var agentMemberUsername = exports_external.string().toLowerCase().regex(/^[a-z][a-z0-9_]{2,29}$/).refine((value) => !["here", "channel", "everyone"].includes(value)).describe("Optional globally unique Chat username, without @. If omitted, the API assigns an available username. A taken choice must be changed by the human.");
|
|
81452
81452
|
|
|
81453
|
+
// ../scribed-agent/src/agent-member-persona.ts
|
|
81454
|
+
var agentMemberPersonaId = exports_external.enum(["workspace_manager"]).default("workspace_manager").describe("The worker type; omit it. workspace_manager (shown as “AI worker”) is the only type, and agent_members_catalog lists its skills.");
|
|
81455
|
+
|
|
81453
81456
|
// ../scribed-agent/src/agent-member-tools.ts
|
|
81454
81457
|
var Workspace4 = exports_external.object({
|
|
81455
81458
|
workspaceId: exports_external.string().uuid().optional().describe("The verified workspace ID from workspaces_list. Omitted only when the caller’s transport already selects the workspace; an account agent must pass it.")
|
|
@@ -81464,6 +81467,8 @@ function interactive2() {
|
|
|
81464
81467
|
throw new Error("agent_member_management_requires_human");
|
|
81465
81468
|
return {};
|
|
81466
81469
|
}
|
|
81470
|
+
var LINE_DEFAULT_HEADER = { "X-Agent-Hire-Line-Default": "1" };
|
|
81471
|
+
var LINE_EFFECT = "An unassigned line is your team’s shared line: the one the worker takes stops ringing the team, and the worker can read its earlier texts and calls (it has no voice, and its own texts are not available yet).";
|
|
81467
81472
|
var AGENT_MEMBER_TOOL_NAMES = [
|
|
81468
81473
|
"agent_members_catalog",
|
|
81469
81474
|
"agent_members_list",
|
|
@@ -81489,7 +81494,7 @@ function buildAgentMemberTools(h) {
|
|
|
81489
81494
|
const target3 = (a, ws) => `${base6(ws)}/${encodeURIComponent(a.agentUserId)}`;
|
|
81490
81495
|
return {
|
|
81491
81496
|
agent_members_catalog: h.workspaceRestTool({
|
|
81492
|
-
description: "Read this workspace’s worker catalog: the personas, the one flat day price (price.dayPrice — feature agent.member.day, a USD amount per day with its label — plus the model allowance text, the terms revision and the terms URL; price is null when hiring is unavailable), lines.assignableCount (phone lines a hire
|
|
81497
|
+
description: "Read this workspace’s worker catalog: the worker type and its skills (personas[] — one type, each with skills[] of { id, label, detail }; describe what a worker can do only from these), the one flat day price (price.dayPrice — feature agent.member.day, a USD amount per day with its label — plus the model allowance text, the terms revision and the terms URL; price is null when hiring is unavailable), lines.assignableCount (unassigned workspace phone lines, each one of the team’s shared lines; a hire takes one by default only while another stays with the team, and assignLine: true may take the last one), billing, configuration, quota, canHire, the contract revision and whether the account’s worker terms are already accepted. Before a hire or adoption show the human manager the day price, the allowance and the terms revision exactly as returned and get their explicit confirmation; never invent a price or terms. There is no offer id: the hire records a snapshot of the displayed price.",
|
|
81493
81498
|
inputSchema: Workspace4,
|
|
81494
81499
|
method: "GET",
|
|
81495
81500
|
path: (_a4, ws) => `${base6(ws)}/catalog`,
|
|
@@ -81525,19 +81530,19 @@ function buildAgentMemberTools(h) {
|
|
|
81525
81530
|
body: (a) => ({ text: a.message, requestId: a.requestId })
|
|
81526
81531
|
}),
|
|
81527
81532
|
agent_member_hire: h.workspaceRestTool({
|
|
81528
|
-
description:
|
|
81533
|
+
description: `After the current human workspace owner reviews the catalog’s displayed flat day price, model allowance and terms revision and explicitly confirms them, hire one named worker of the catalog’s one worker type (personaId workspace_manager, shown as “AI worker”; omit it). Only workspace owners can hire. The hire captures a price snapshot of that displayed catalog price; there is no offer id to send, and a changed catalog price requires fresh review. By default the worker gets one of the workspace’s unassigned phone lines only while another stays with the team, and the hire goes ahead without a line otherwise; no number is ever bought. ${LINE_EFFECT} Before they confirm, tell the human which applies; send assignLine: false when they chose a hire without a line, and assignLine: true only when they chose to give the worker the team’s last shared line. acceptAccountTerms: true is sent once only when the catalog reports the account’s worker terms as not yet accepted. A named member appears while setup continues. This incurs the displayed daily charge. Preserve the same requestId and body on an uncertain response.`,
|
|
81529
81534
|
inputSchema: Workspace4.extend({
|
|
81530
|
-
personaId:
|
|
81535
|
+
personaId: agentMemberPersonaId,
|
|
81531
81536
|
name: name2,
|
|
81532
81537
|
username: agentMemberUsername.optional(),
|
|
81533
|
-
assignLine: exports_external.boolean().optional().describe("
|
|
81538
|
+
assignLine: exports_external.boolean().optional().describe("Omit for the default: the worker gets one of the workspace’s unassigned phone lines only while another stays with the team (never a purchase), and is hired without a line otherwise. false hires without a line. true takes one even when it is the team’s last shared line. A line taken stops ringing the team, and the worker can read its earlier texts and calls."),
|
|
81534
81539
|
acceptAccountTerms: AcceptAccountTerms,
|
|
81535
81540
|
confirmed: exports_external.literal(true),
|
|
81536
81541
|
requestId: Key2
|
|
81537
81542
|
}),
|
|
81538
81543
|
method: "POST",
|
|
81539
81544
|
path: (_a4, ws) => base6(ws),
|
|
81540
|
-
headers: (a) => ({ ...interactive2(), "Idempotency-Key": a.requestId }),
|
|
81545
|
+
headers: (a) => ({ ...interactive2(), "Idempotency-Key": a.requestId, ...LINE_DEFAULT_HEADER }),
|
|
81541
81546
|
body: (a) => ({
|
|
81542
81547
|
personaId: a.personaId,
|
|
81543
81548
|
name: a.name,
|
|
@@ -81700,10 +81705,10 @@ var controls2 = /[\u0000-\u001f\u007f-\u009f]/u;
|
|
|
81700
81705
|
var name3 = exports_external.string().refine((value) => !controls2.test(value), "A worker name cannot contain control characters.").transform((value) => value.normalize("NFKC").trim().replace(/ +/gu, " ")).refine((value) => [...value].length >= 1 && [...value].length <= 80, "Use a name of 1 to 80 characters.");
|
|
81701
81706
|
var inputSchema = exports_external.object({
|
|
81702
81707
|
workspaceId: exports_external.string().uuid(),
|
|
81703
|
-
personaId:
|
|
81708
|
+
personaId: agentMemberPersonaId,
|
|
81704
81709
|
name: name3,
|
|
81705
81710
|
username: agentMemberUsername.optional(),
|
|
81706
|
-
assignLine: exports_external.boolean().optional().describe("
|
|
81711
|
+
assignLine: exports_external.boolean().optional().describe("Omit for the default: at hire the worker gets one of the workspace’s unassigned phone lines only while another stays with the team (never a purchase), and is hired without a line otherwise; no free line is needed to prepare. false proposes a hire without a line. true insists on a line, even the team’s last shared one: preparing is refused with agent_line_unavailable while the catalog’s lines.assignableCount is 0. A line taken stops ringing the team, and the worker can read its earlier texts and calls. The human still confirms the choice on the review card, which says so."),
|
|
81707
81712
|
requestId: exports_external.string().uuid().describe("Reuse this UUID for an identical proposal retry; a changed proposal needs a new requestId."),
|
|
81708
81713
|
expectedRevision: exports_external.number().int().min(0).default(0).describe("The latest saved proposal revision; use 0 when preparing the first proposal in this conversation.")
|
|
81709
81714
|
}).strict();
|
package/dist/mcp/server.js
CHANGED
|
@@ -70177,7 +70177,7 @@ class StdioServerTransport {
|
|
|
70177
70177
|
// package.json
|
|
70178
70178
|
var package_default = {
|
|
70179
70179
|
name: "@scribed/cli",
|
|
70180
|
-
version: "0.1.
|
|
70180
|
+
version: "0.1.36",
|
|
70181
70181
|
description: "Command-line client + MCP server for Scribed — CRM records, phone + texting, inbox, calendar + booking, transcriptions, HR, Vault, automations, Creative Studio, and Documents, derived from the scribed-agent tool catalog.",
|
|
70182
70182
|
type: "module",
|
|
70183
70183
|
license: "SEE LICENSE IN LICENSE",
|
|
@@ -76954,6 +76954,9 @@ function buildProductStockTools({ workspaceRestTool }) {
|
|
|
76954
76954
|
// ../scribed-agent/src/agent-member-username.ts
|
|
76955
76955
|
var agentMemberUsername = exports_external.string().toLowerCase().regex(/^[a-z][a-z0-9_]{2,29}$/).refine((value) => !["here", "channel", "everyone"].includes(value)).describe("Optional globally unique Chat username, without @. If omitted, the API assigns an available username. A taken choice must be changed by the human.");
|
|
76956
76956
|
|
|
76957
|
+
// ../scribed-agent/src/agent-member-persona.ts
|
|
76958
|
+
var agentMemberPersonaId = exports_external.enum(["workspace_manager"]).default("workspace_manager").describe("The worker type; omit it. workspace_manager (shown as “AI worker”) is the only type, and agent_members_catalog lists its skills.");
|
|
76959
|
+
|
|
76957
76960
|
// ../scribed-agent/src/agent-member-tools.ts
|
|
76958
76961
|
var Workspace4 = exports_external.object({
|
|
76959
76962
|
workspaceId: exports_external.string().uuid().optional().describe("The verified workspace ID from workspaces_list. Omitted only when the caller’s transport already selects the workspace; an account agent must pass it.")
|
|
@@ -76968,6 +76971,8 @@ function interactive2() {
|
|
|
76968
76971
|
throw new Error("agent_member_management_requires_human");
|
|
76969
76972
|
return {};
|
|
76970
76973
|
}
|
|
76974
|
+
var LINE_DEFAULT_HEADER = { "X-Agent-Hire-Line-Default": "1" };
|
|
76975
|
+
var LINE_EFFECT = "An unassigned line is your team’s shared line: the one the worker takes stops ringing the team, and the worker can read its earlier texts and calls (it has no voice, and its own texts are not available yet).";
|
|
76971
76976
|
var AGENT_MEMBER_TOOL_NAMES = [
|
|
76972
76977
|
"agent_members_catalog",
|
|
76973
76978
|
"agent_members_list",
|
|
@@ -76993,7 +76998,7 @@ function buildAgentMemberTools(h) {
|
|
|
76993
76998
|
const target3 = (a, ws) => `${base7(ws)}/${encodeURIComponent(a.agentUserId)}`;
|
|
76994
76999
|
return {
|
|
76995
77000
|
agent_members_catalog: h.workspaceRestTool({
|
|
76996
|
-
description: "Read this workspace’s worker catalog: the personas, the one flat day price (price.dayPrice — feature agent.member.day, a USD amount per day with its label — plus the model allowance text, the terms revision and the terms URL; price is null when hiring is unavailable), lines.assignableCount (phone lines a hire
|
|
77001
|
+
description: "Read this workspace’s worker catalog: the worker type and its skills (personas[] — one type, each with skills[] of { id, label, detail }; describe what a worker can do only from these), the one flat day price (price.dayPrice — feature agent.member.day, a USD amount per day with its label — plus the model allowance text, the terms revision and the terms URL; price is null when hiring is unavailable), lines.assignableCount (unassigned workspace phone lines, each one of the team’s shared lines; a hire takes one by default only while another stays with the team, and assignLine: true may take the last one), billing, configuration, quota, canHire, the contract revision and whether the account’s worker terms are already accepted. Before a hire or adoption show the human manager the day price, the allowance and the terms revision exactly as returned and get their explicit confirmation; never invent a price or terms. There is no offer id: the hire records a snapshot of the displayed price.",
|
|
76997
77002
|
inputSchema: Workspace4,
|
|
76998
77003
|
method: "GET",
|
|
76999
77004
|
path: (_a4, ws) => `${base7(ws)}/catalog`,
|
|
@@ -77029,19 +77034,19 @@ function buildAgentMemberTools(h) {
|
|
|
77029
77034
|
body: (a) => ({ text: a.message, requestId: a.requestId })
|
|
77030
77035
|
}),
|
|
77031
77036
|
agent_member_hire: h.workspaceRestTool({
|
|
77032
|
-
description:
|
|
77037
|
+
description: `After the current human workspace owner reviews the catalog’s displayed flat day price, model allowance and terms revision and explicitly confirms them, hire one named worker of the catalog’s one worker type (personaId workspace_manager, shown as “AI worker”; omit it). Only workspace owners can hire. The hire captures a price snapshot of that displayed catalog price; there is no offer id to send, and a changed catalog price requires fresh review. By default the worker gets one of the workspace’s unassigned phone lines only while another stays with the team, and the hire goes ahead without a line otherwise; no number is ever bought. ${LINE_EFFECT} Before they confirm, tell the human which applies; send assignLine: false when they chose a hire without a line, and assignLine: true only when they chose to give the worker the team’s last shared line. acceptAccountTerms: true is sent once only when the catalog reports the account’s worker terms as not yet accepted. A named member appears while setup continues. This incurs the displayed daily charge. Preserve the same requestId and body on an uncertain response.`,
|
|
77033
77038
|
inputSchema: Workspace4.extend({
|
|
77034
|
-
personaId:
|
|
77039
|
+
personaId: agentMemberPersonaId,
|
|
77035
77040
|
name: name2,
|
|
77036
77041
|
username: agentMemberUsername.optional(),
|
|
77037
|
-
assignLine: exports_external.boolean().optional().describe("
|
|
77042
|
+
assignLine: exports_external.boolean().optional().describe("Omit for the default: the worker gets one of the workspace’s unassigned phone lines only while another stays with the team (never a purchase), and is hired without a line otherwise. false hires without a line. true takes one even when it is the team’s last shared line. A line taken stops ringing the team, and the worker can read its earlier texts and calls."),
|
|
77038
77043
|
acceptAccountTerms: AcceptAccountTerms,
|
|
77039
77044
|
confirmed: exports_external.literal(true),
|
|
77040
77045
|
requestId: Key2
|
|
77041
77046
|
}),
|
|
77042
77047
|
method: "POST",
|
|
77043
77048
|
path: (_a4, ws) => base7(ws),
|
|
77044
|
-
headers: (a) => ({ ...interactive2(), "Idempotency-Key": a.requestId }),
|
|
77049
|
+
headers: (a) => ({ ...interactive2(), "Idempotency-Key": a.requestId, ...LINE_DEFAULT_HEADER }),
|
|
77045
77050
|
body: (a) => ({
|
|
77046
77051
|
personaId: a.personaId,
|
|
77047
77052
|
name: a.name,
|
|
@@ -77204,10 +77209,10 @@ var controls2 = /[\u0000-\u001f\u007f-\u009f]/u;
|
|
|
77204
77209
|
var name3 = exports_external.string().refine((value) => !controls2.test(value), "A worker name cannot contain control characters.").transform((value) => value.normalize("NFKC").trim().replace(/ +/gu, " ")).refine((value) => [...value].length >= 1 && [...value].length <= 80, "Use a name of 1 to 80 characters.");
|
|
77205
77210
|
var inputSchema = exports_external.object({
|
|
77206
77211
|
workspaceId: exports_external.string().uuid(),
|
|
77207
|
-
personaId:
|
|
77212
|
+
personaId: agentMemberPersonaId,
|
|
77208
77213
|
name: name3,
|
|
77209
77214
|
username: agentMemberUsername.optional(),
|
|
77210
|
-
assignLine: exports_external.boolean().optional().describe("
|
|
77215
|
+
assignLine: exports_external.boolean().optional().describe("Omit for the default: at hire the worker gets one of the workspace’s unassigned phone lines only while another stays with the team (never a purchase), and is hired without a line otherwise; no free line is needed to prepare. false proposes a hire without a line. true insists on a line, even the team’s last shared one: preparing is refused with agent_line_unavailable while the catalog’s lines.assignableCount is 0. A line taken stops ringing the team, and the worker can read its earlier texts and calls. The human still confirms the choice on the review card, which says so."),
|
|
77211
77216
|
requestId: exports_external.string().uuid().describe("Reuse this UUID for an identical proposal retry; a changed proposal needs a new requestId."),
|
|
77212
77217
|
expectedRevision: exports_external.number().int().min(0).default(0).describe("The latest saved proposal revision; use 0 when preparing the first proposal in this conversation.")
|
|
77213
77218
|
}).strict();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scribed/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.36",
|
|
4
4
|
"description": "Command-line client + MCP server for Scribed — CRM records, phone + texting, inbox, calendar + booking, transcriptions, HR, Vault, automations, Creative Studio, and Documents, derived from the scribed-agent tool catalog.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
"url": "git+https://github.com/q6th/scribed-works.git",
|
|
40
40
|
"directory": "scribed-cli"
|
|
41
41
|
},
|
|
42
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "9ed491237c13f764cc26c49df2d4e45f477a9b05",
|
|
43
43
|
"scribedRelease": {
|
|
44
44
|
"repository": "q6th/scribed-works",
|
|
45
|
-
"commit": "
|
|
45
|
+
"commit": "9ed491237c13f764cc26c49df2d4e45f477a9b05"
|
|
46
46
|
}
|
|
47
47
|
}
|