@assetlab/mcp-server 1.20.0 → 1.21.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.
@@ -17,12 +17,21 @@ const INJECTION_PATTERNS = [
17
17
  { pattern: /\[\s*(admin|developer)\s+override/i, label: 'fake admin/developer tag' },
18
18
  { pattern: /skip\s+(the\s+)?confirmation/i, label: 'instruction to skip confirmation' },
19
19
  { pattern: /\bpre[-\s]?approved\b/i, label: 'claim of pre-approval' },
20
- { pattern: /ignore\s+(all\s+)?(previous|prior|above)\s+instructions/i, label: 'instruction override' },
21
- { pattern: /disregard\s+(all\s+)?(previous|prior|above)\s+instructions/i, label: 'instruction override' },
20
+ {
21
+ pattern: /ignore\s+(all\s+)?(previous|prior|above)\s+instructions/i,
22
+ label: 'instruction override',
23
+ },
24
+ {
25
+ pattern: /disregard\s+(all\s+)?(previous|prior|above)\s+instructions/i,
26
+ label: 'instruction override',
27
+ },
22
28
  { pattern: /you\s+are\s+now\s+/i, label: 'role reassignment' },
23
29
  { pattern: /new\s+instructions\s*:/i, label: 'instruction injection' },
24
30
  { pattern: /<\/?\s*(tool_use|system|assistant|instructions)\s*>/i, label: 'fake control tag' },
25
- { pattern: /act\s+as\s+(if\s+)?(an?\s+)?(admin|administrator|root|developer)/i, label: 'privilege escalation prompt' },
31
+ {
32
+ pattern: /act\s+as\s+(if\s+)?(an?\s+)?(admin|administrator|root|developer)/i,
33
+ label: 'privilege escalation prompt',
34
+ },
26
35
  ];
27
36
  const TRUST_BOUNDARY_WARNING = '⚠️ TRUST BOUNDARY NOTICE: The response below contains user-authored content from a tenant. ' +
28
37
  'One or more patterns commonly used in prompt-injection attempts were detected ' +
@@ -1 +1 @@
1
- {"version":3,"file":"response-shaping.js","sourceRoot":"","sources":["../src/response-shaping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,kBAAkB,GAAsD;IAC5E,EAAE,OAAO,EAAE,uDAAuD,EAAE,KAAK,EAAE,iBAAiB,EAAE;IAC9F,EAAE,OAAO,EAAE,oCAAoC,EAAE,KAAK,EAAE,0BAA0B,EAAE;IACpF,EAAE,OAAO,EAAE,+BAA+B,EAAE,KAAK,EAAE,kCAAkC,EAAE;IACvF,EAAE,OAAO,EAAE,wBAAwB,EAAE,KAAK,EAAE,uBAAuB,EAAE;IACrE,EAAE,OAAO,EAAE,0DAA0D,EAAE,KAAK,EAAE,sBAAsB,EAAE;IACtG,EAAE,OAAO,EAAE,6DAA6D,EAAE,KAAK,EAAE,sBAAsB,EAAE;IACzG,EAAE,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,mBAAmB,EAAE;IAC9D,EAAE,OAAO,EAAE,yBAAyB,EAAE,KAAK,EAAE,uBAAuB,EAAE;IACtE,EAAE,OAAO,EAAE,sDAAsD,EAAE,KAAK,EAAE,kBAAkB,EAAE;IAC9F,EAAE,OAAO,EAAE,mEAAmE,EAAE,KAAK,EAAE,6BAA6B,EAAE;CACvH,CAAA;AAED,MAAM,sBAAsB,GAC1B,6FAA6F;IAC7F,gFAAgF;IAChF,8EAA8E;IAC9E,0EAA0E;IAC1E,8EAA8E;IAC9E,uCAAuC,CAAA;AAEzC,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,KAAK,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,kBAAkB,EAAE,CAAC;QACpD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1C,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC1C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM;QAC1B,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;QACxE,CAAC,CAAC,IAAI,CAAA;IACR,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;AACvD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAY;IAItC,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAChE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC3F,CAAC"}
1
+ {"version":3,"file":"response-shaping.js","sourceRoot":"","sources":["../src/response-shaping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,kBAAkB,GAAsD;IAC5E,EAAE,OAAO,EAAE,uDAAuD,EAAE,KAAK,EAAE,iBAAiB,EAAE;IAC9F,EAAE,OAAO,EAAE,oCAAoC,EAAE,KAAK,EAAE,0BAA0B,EAAE;IACpF,EAAE,OAAO,EAAE,+BAA+B,EAAE,KAAK,EAAE,kCAAkC,EAAE;IACvF,EAAE,OAAO,EAAE,wBAAwB,EAAE,KAAK,EAAE,uBAAuB,EAAE;IACrE;QACE,OAAO,EAAE,0DAA0D;QACnE,KAAK,EAAE,sBAAsB;KAC9B;IACD;QACE,OAAO,EAAE,6DAA6D;QACtE,KAAK,EAAE,sBAAsB;KAC9B;IACD,EAAE,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,mBAAmB,EAAE;IAC9D,EAAE,OAAO,EAAE,yBAAyB,EAAE,KAAK,EAAE,uBAAuB,EAAE;IACtE,EAAE,OAAO,EAAE,sDAAsD,EAAE,KAAK,EAAE,kBAAkB,EAAE;IAC9F;QACE,OAAO,EAAE,mEAAmE;QAC5E,KAAK,EAAE,6BAA6B;KACrC;CACF,CAAA;AAED,MAAM,sBAAsB,GAC1B,6FAA6F;IAC7F,gFAAgF;IAChF,8EAA8E;IAC9E,0EAA0E;IAC1E,8EAA8E;IAC9E,uCAAuC,CAAA;AAEzC,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,KAAK,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,kBAAkB,EAAE,CAAC;QACpD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1C,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC1C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM;QAC1B,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;QACxE,CAAC,CAAC,IAAI,CAAA;IACR,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;AACvD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAY;IAItC,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAChE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC3F,CAAC"}
@@ -1669,7 +1669,7 @@ export function registerWriteTools(server, client) {
1669
1669
  // ============================================================
1670
1670
  // 18. Asset Costs (scope: asset_costs)
1671
1671
  // ============================================================
1672
- server.tool('create_asset_cost', 'Create a new asset cost entry. Requires asset_costs:write scope.', {
1672
+ server.tool('create_asset_cost', 'Create a new asset cost entry — the record type shown on the AssetLab "Expenses" page. Requires asset_costs:write scope.', {
1673
1673
  category: z
1674
1674
  .enum(['Repair', 'PM', 'Operation', 'Replacement', 'Decommission', 'Other'])
1675
1675
  .describe('Cost category (required)'),
@@ -1680,6 +1680,8 @@ export function registerWriteTools(server, client) {
1680
1680
  building_id: z.string().uuid().optional().describe('Building ID'),
1681
1681
  work_order_id: z.string().uuid().optional().describe('Work order ID'),
1682
1682
  description: z.string().optional().describe('Description'),
1683
+ invoice_number: z.string().max(200).optional().describe('Invoice number (free text)'),
1684
+ po_number: z.string().max(200).optional().describe('Purchase order number (free text)'),
1683
1685
  }, async (params) => {
1684
1686
  try {
1685
1687
  const result = await client.create('asset-costs', buildBody(params));
@@ -1689,7 +1691,7 @@ export function registerWriteTools(server, client) {
1689
1691
  return formatError(err);
1690
1692
  }
1691
1693
  });
1692
- server.tool('update_asset_cost', 'Update an existing asset cost entry by ID. Requires asset_costs:write scope.', {
1694
+ server.tool('update_asset_cost', 'Update an existing asset cost entry by ID — the record type shown on the AssetLab "Expenses" page. Requires asset_costs:write scope.', {
1693
1695
  id: z.string().uuid().describe('Asset cost ID'),
1694
1696
  category: z
1695
1697
  .enum(['Repair', 'PM', 'Operation', 'Replacement', 'Decommission', 'Other'])
@@ -1702,6 +1704,8 @@ export function registerWriteTools(server, client) {
1702
1704
  building_id: z.string().uuid().optional().describe('Building ID'),
1703
1705
  work_order_id: z.string().uuid().optional().describe('Work order ID'),
1704
1706
  description: z.string().optional().describe('Description'),
1707
+ invoice_number: z.string().max(200).optional().describe('Invoice number (free text)'),
1708
+ po_number: z.string().max(200).optional().describe('Purchase order number (free text)'),
1705
1709
  }, async ({ id, ...rest }) => {
1706
1710
  try {
1707
1711
  const result = await client.update('asset-costs', id, buildBody(rest));