@ziggs-ai/ziggs-mcp 0.17.1 → 0.18.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.
Files changed (2) hide show
  1. package/dist/tools.js +27 -2
  2. package/package.json +2 -2
package/dist/tools.js CHANGED
@@ -722,7 +722,7 @@ export function registerZiggsTools(server, creds, cfg) {
722
722
  // ---------------------------------------------------------------------------
723
723
  // Task mutation tools
724
724
  // ---------------------------------------------------------------------------
725
- registerStrictTool(server, 'ziggs_task_create', 'Create one task, or atomically declare a native work graph under a root task. Every task and graph node cites exactly one active agreement (agreementId required). A plan is one assignee\'s checklist for its own task: pass plan to give the task its checklist in the same call — every step needs a non-blank description, since that is the label whoever is watching reads before anything closes — or leave it off and post it later with ziggs_task_replace_plan. Tick progress with ziggs_task_update_steps (name the steps that changed); do not resend the whole plan to mark one step done. Reach for graph instead of plan when work changes hands, contracts, or dependencies.', {
725
+ registerStrictTool(server, 'ziggs_task_create', 'Create one task, or atomically declare a native work graph under a root task. Every task and graph node cites exactly one active agreement (agreementId required). A plan is one assignee\'s checklist for its own task: pass plan to give the task its checklist in the same call — every step needs a non-blank description, since that is the label whoever is watching reads before anything closes — or leave it off and post it later with ziggs_task_replace_plan. Tick progress with ziggs_task_update_steps (name the steps that changed); do not resend the whole plan to mark one step done. Reach for graph instead of plan when work changes hands, contracts, or dependencies. For work that means getting an answer out of somebody, set dueAt and checkBack so whoever holds it knows when to stop and how often it may remind.', {
726
726
  agreementId: z.string().describe('Agreement this task belongs to'),
727
727
  description: z.string().describe('What the task entails'),
728
728
  title: z
@@ -795,7 +795,30 @@ export function registerZiggsTools(server, creds, cfg) {
795
795
  .boolean()
796
796
  .optional()
797
797
  .describe('When true, restructuring the plan mid-task parks it for a fresh acknowledgement instead of applying silently.'),
798
- }, write('Create a task'), async ({ agreementId, description, title, parentTaskId, assigneeId, inputArtifactIds, waitsOn, graph, plan, planReviewTiming, requireMidWorkPlanAck, }) => {
798
+ // For work that means chasing an answer out of somebody.
799
+ // Nothing on the server makes the holder keep to these yet, so the
800
+ // wording here is the contract: it is what the holder reads.
801
+ dueAt: z
802
+ .string()
803
+ .optional()
804
+ .describe('Deadline, ISO 8601 (e.g. 2026-09-12T17:00:00Z). Whoever holds this task posts what it has and where it is stuck at the deadline, in the room where the question was asked, and then stops. A deadline already past is refused.'),
805
+ checkBack: z
806
+ .object({
807
+ everyMinutes: z
808
+ .number()
809
+ .int()
810
+ .min(5)
811
+ .describe('Minimum minutes between two reminders to the same person. A floor, not a schedule — reminding later is fine, sooner is not.'),
812
+ maxReminders: z
813
+ .number()
814
+ .int()
815
+ .min(1)
816
+ .max(20)
817
+ .describe('Total reminders allowed per person asked, after the first ask. Then the holder stops and reports.'),
818
+ })
819
+ .optional()
820
+ .describe('How often the holder may remind, and how many times at most. Both halves are required together: a cadence with no budget is refused, because one reminder is one wake and a rule that never says stop is an open-ended loop. Omit entirely for a task nobody needs reminding about.'),
821
+ }, write('Create a task'), async ({ agreementId, description, title, parentTaskId, assigneeId, inputArtifactIds, waitsOn, graph, plan, planReviewTiming, requireMidWorkPlanAck, dueAt, checkBack, }) => {
799
822
  try {
800
823
  const task = await createTask({
801
824
  agreementId,
@@ -809,6 +832,8 @@ export function registerZiggsTools(server, creds, cfg) {
809
832
  plan,
810
833
  planReviewTiming,
811
834
  requireMidWorkPlanAck,
835
+ dueAt,
836
+ checkBack,
812
837
  }, creds);
813
838
  return textResult({ ok: true, task });
814
839
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ziggs-ai/ziggs-mcp",
3
- "version": "0.17.1",
3
+ "version": "0.18.0",
4
4
  "description": "MCP server for Claude Code, Cursor, and other MCP hosts — act as your Ziggs delegate agent",
5
5
  "type": "module",
6
6
  "bin": {
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "@modelcontextprotocol/sdk": "^1.29.0",
42
- "@ziggs-ai/api-client": "0.17.1",
42
+ "@ziggs-ai/api-client": "0.18.0",
43
43
  "dotenv": "^16.6.1",
44
44
  "zod": "^3.24.2",
45
45
  "zod-to-json-schema": "^3.25.1"