@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 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.35",
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.35",
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 can be assigned), 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.",
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: "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 with the workspace_manager or full_stack_developer role. 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. assignLine: true assigns one of the catalog’s assignable phone lines; 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.",
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: exports_external.enum(["workspace_manager", "full_stack_developer"]),
81535
+ personaId: agentMemberPersonaId,
81531
81536
  name: name2,
81532
81537
  username: agentMemberUsername.optional(),
81533
- assignLine: exports_external.boolean().optional().describe("true assigns one of the catalog’s assignable phone lines to the worker at hire."),
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: exports_external.enum(["workspace_manager", "full_stack_developer"]),
81708
+ personaId: agentMemberPersonaId,
81704
81709
  name: name3,
81705
81710
  username: agentMemberUsername.optional(),
81706
- assignLine: exports_external.boolean().optional().describe("true proposes assigning one of the catalog’s assignable phone lines at hire; the human still confirms it on the review card."),
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();
@@ -70177,7 +70177,7 @@ class StdioServerTransport {
70177
70177
  // package.json
70178
70178
  var package_default = {
70179
70179
  name: "@scribed/cli",
70180
- version: "0.1.35",
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 can be assigned), 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.",
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: "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 with the workspace_manager or full_stack_developer role. 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. assignLine: true assigns one of the catalog’s assignable phone lines; 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.",
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: exports_external.enum(["workspace_manager", "full_stack_developer"]),
77039
+ personaId: agentMemberPersonaId,
77035
77040
  name: name2,
77036
77041
  username: agentMemberUsername.optional(),
77037
- assignLine: exports_external.boolean().optional().describe("true assigns one of the catalog’s assignable phone lines to the worker at hire."),
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: exports_external.enum(["workspace_manager", "full_stack_developer"]),
77212
+ personaId: agentMemberPersonaId,
77208
77213
  name: name3,
77209
77214
  username: agentMemberUsername.optional(),
77210
- assignLine: exports_external.boolean().optional().describe("true proposes assigning one of the catalog’s assignable phone lines at hire; the human still confirms it on the review card."),
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.35",
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": "2996acd1b87889188cf520602566dfad9d76f382",
42
+ "gitHead": "9ed491237c13f764cc26c49df2d4e45f477a9b05",
43
43
  "scribedRelease": {
44
44
  "repository": "q6th/scribed-works",
45
- "commit": "2996acd1b87889188cf520602566dfad9d76f382"
45
+ "commit": "9ed491237c13f764cc26c49df2d4e45f477a9b05"
46
46
  }
47
47
  }