@critical-path/svelte 0.19.5 → 0.19.6
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/CHANGELOG.md +9 -0
- package/dist/index.js +15 -7
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -4532,6 +4532,7 @@ var Sn = (e, t) => {
|
|
|
4532
4532
|
assigneeId: X(I()),
|
|
4533
4533
|
dueDate: X(I()),
|
|
4534
4534
|
deadline: X(I()).describe("Latest acceptable finish, enforced by critical path analysis"),
|
|
4535
|
+
earliestStart: X(I()).describe("Earliest the task may start, enforced by critical path analysis"),
|
|
4535
4536
|
isMilestone: X(R()).describe("A zero-duration checkpoint"),
|
|
4536
4537
|
estimatedHours: X(L()),
|
|
4537
4538
|
loggedHours: X(L()),
|
|
@@ -4549,7 +4550,8 @@ var Sn = (e, t) => {
|
|
|
4549
4550
|
id: I(),
|
|
4550
4551
|
taskId: I().describe("The task that waits"),
|
|
4551
4552
|
dependsOnTaskId: I().describe("The task it waits for"),
|
|
4552
|
-
type: I().describe("blocking or relates_to")
|
|
4553
|
+
type: I().describe("blocking or relates_to"),
|
|
4554
|
+
lagHours: X(L()).describe("Working hours the waiting task waits after the other finishes")
|
|
4553
4555
|
}).describe("A dependency between two tasks"), An = Y({
|
|
4554
4556
|
id: I(),
|
|
4555
4557
|
projectId: I(),
|
|
@@ -4712,7 +4714,7 @@ var Sn = (e, t) => {
|
|
|
4712
4714
|
{
|
|
4713
4715
|
name: "plan-project",
|
|
4714
4716
|
description: "Turn a goal, brief or feature list into a Critical Path project with deliverables, estimated and prioritized tasks, and the dependencies between them. Use when the user asks to plan, scope or break down work.",
|
|
4715
|
-
content: "---\nname: plan-project\ndescription: Turn a goal, brief or feature list into a Critical Path project with deliverables, estimated and prioritized tasks, and the dependencies between them. Use when the user asks to plan, scope or break down work.\n---\n\n# Plan a project\n\nTurn a goal into deliverables (dated outcomes), tasks (estimated units of work) and dependencies (which task waits for which) the scheduler can use.\n\n## 1. Find or create the project\n\n1. Call `list_projects`. If a project already matches the goal, use it and read it with `get_project` to learn its workflow status keys and custom fields.\n2. Only if none fits, and the user wants a new one, call `create_project` with a `name` and a short `key`.\n3. Call `list_tasks` with the `projectId` and `list_deliverables` to see what already exists. Do not recreate it.\n\n## 2. Draft the plan before writing anything\n\nBreak the goal down in your reply first and show it to the user:\n\n- **Deliverables**: 2-6 outcomes someone could accept or reject, each with a due date if the user gave one.\n- **Milestones** for dated checkpoints (a release, a sign-off, a review): a task with `isMilestone: true`, a `deadline` if the date is fixed, and dependencies on the tasks that must finish first. The schedule then reports whether each date will be met.\n- **Tasks** under each deliverable. Each task:\n - starts with a verb and is small enough for one person (about 2-24 hours);\n - has `estimatedHours` (effort, not elapsed time);\n - has a `priority`: `urgent` only for work that blocks others now, `high` for the critical outcome, `medium` by default, `low` for nice-to-haves;\n - lists the tasks it must wait for (its dependencies). Only add a dependency when the work truly cannot start earlier; every extra one lengthens the schedule.\n- Note anything you assumed (team size, dates, scope) as a question.\n\nAsk the user to confirm or adjust before creating anything. A plan is cheap to change in chat and tedious to change once created.\n\n## 3. Create it\n\n1. Create tasks with `create_task` (`projectId`, `title`, `description` with acceptance criteria, `estimatedHours`, `priority`, `assigneeId` if known). Leave `status` out so tasks start in the workflow's default status.\n2. Create each deliverable with `create_deliverable`, passing the ids of its tasks in `taskIds`.\n3. Add each dependency from your plan with `add_dependency`: `taskId` is the task that waits, `dependsOnTaskId` the task that must finish first. Use the ids `create_task` returned. If one is refused as circular, your plan has a loop: fix the order with the user instead of retrying.\n4. If the project already had tasks, check what they wait for with `get_task` and `includeDependencies: true` before linking new work to them.\n\n## 4. Check the result\n\n1. Call `calculate_critical_path` for the project and report the forecast `projectEndDate` and the `criticalTaskIds` (by title). If every task is critical or the end date looks too early, a dependency is probably missing or reversed.\n2. If the end date misses a deliverable's due date, or `missedDeadlineTaskIds` is not empty, say so and suggest what to cut, split or reassign. The `analyze-schedule` skill covers this in depth.\n\n## Guardrails\n\n- Never invent user ids for `assigneeId`. Leave tasks unassigned unless the user named the person and you have their id.\n- Keep the plan to what the user asked for; propose extra work as suggestions, not tasks.\n"
|
|
4717
|
+
content: "---\nname: plan-project\ndescription: Turn a goal, brief or feature list into a Critical Path project with deliverables, estimated and prioritized tasks, and the dependencies between them. Use when the user asks to plan, scope or break down work.\n---\n\n# Plan a project\n\nTurn a goal into deliverables (dated outcomes), tasks (estimated units of work) and dependencies (which task waits for which) the scheduler can use.\n\n## 1. Find or create the project\n\n1. Call `list_projects`. If a project already matches the goal, use it and read it with `get_project` to learn its workflow status keys and custom fields.\n2. Only if none fits, and the user wants a new one, call `create_project` with a `name` and a short `key`.\n3. Call `list_tasks` with the `projectId` and `list_deliverables` to see what already exists. Do not recreate it.\n\n## 2. Draft the plan before writing anything\n\nBreak the goal down in your reply first and show it to the user:\n\n- **Deliverables**: 2-6 outcomes someone could accept or reject, each with a due date if the user gave one.\n- **Waits and fixed start dates**: a dependency's `lagHours` for a wait between tasks (curing, review turnaround), and a task's `earliestStart` when it cannot begin before a date. Do not invent placeholder tasks for these.\n- **Milestones** for dated checkpoints (a release, a sign-off, a review): a task with `isMilestone: true`, a `deadline` if the date is fixed, and dependencies on the tasks that must finish first. The schedule then reports whether each date will be met.\n- **Tasks** under each deliverable. Each task:\n - starts with a verb and is small enough for one person (about 2-24 hours);\n - has `estimatedHours` (effort, not elapsed time);\n - has a `priority`: `urgent` only for work that blocks others now, `high` for the critical outcome, `medium` by default, `low` for nice-to-haves;\n - lists the tasks it must wait for (its dependencies). Only add a dependency when the work truly cannot start earlier; every extra one lengthens the schedule.\n- Note anything you assumed (team size, dates, scope) as a question.\n\nAsk the user to confirm or adjust before creating anything. A plan is cheap to change in chat and tedious to change once created.\n\n## 3. Create it\n\n1. Create tasks with `create_task` (`projectId`, `title`, `description` with acceptance criteria, `estimatedHours`, `priority`, `assigneeId` if known). Leave `status` out so tasks start in the workflow's default status.\n2. Create each deliverable with `create_deliverable`, passing the ids of its tasks in `taskIds`.\n3. Add each dependency from your plan with `add_dependency`: `taskId` is the task that waits, `dependsOnTaskId` the task that must finish first. Use the ids `create_task` returned. If one is refused as circular, your plan has a loop: fix the order with the user instead of retrying.\n4. If the project already had tasks, check what they wait for with `get_task` and `includeDependencies: true` before linking new work to them.\n\n## 4. Check the result\n\n1. Call `calculate_critical_path` for the project and report the forecast `projectEndDate` and the `criticalTaskIds` (by title). If every task is critical or the end date looks too early, a dependency is probably missing or reversed.\n2. If the end date misses a deliverable's due date, or `missedDeadlineTaskIds` is not empty, say so and suggest what to cut, split or reassign. The `analyze-schedule` skill covers this in depth.\n\n## Guardrails\n\n- Never invent user ids for `assigneeId`. Leave tasks unassigned unless the user named the person and you have their id.\n- Keep the plan to what the user asked for; propose extra work as suggestions, not tasks.\n"
|
|
4716
4718
|
},
|
|
4717
4719
|
{
|
|
4718
4720
|
name: "report-status",
|
|
@@ -4927,6 +4929,7 @@ var ir = $({
|
|
|
4927
4929
|
assigneeId: I().optional().describe("User ID to assign task to"),
|
|
4928
4930
|
dueDate: I().optional().describe("Due date (ISO string)"),
|
|
4929
4931
|
deadline: I().optional().describe("Latest acceptable finish (YYYY-MM-DD for the end of that working day, or an ISO date-time). Critical path analysis reports a miss as negative slack"),
|
|
4932
|
+
earliestStart: I().optional().describe("Earliest the task may start (YYYY-MM-DD for the start of that day, or an ISO date-time), e.g. when something from outside the project arrives"),
|
|
4930
4933
|
isMilestone: R().optional().describe("Mark the task as a milestone: a zero-duration checkpoint (release, sign-off) fed by dependencies; its estimate is ignored"),
|
|
4931
4934
|
tags: z(I()).optional().describe("Tags for categorization"),
|
|
4932
4935
|
estimatedHours: L().optional().describe("Estimated hours to complete"),
|
|
@@ -4947,6 +4950,7 @@ var ir = $({
|
|
|
4947
4950
|
assigneeId: e.assigneeId,
|
|
4948
4951
|
dueDate: e.dueDate,
|
|
4949
4952
|
deadline: e.deadline,
|
|
4953
|
+
earliestStart: e.earliestStart,
|
|
4950
4954
|
isMilestone: e.isMilestone,
|
|
4951
4955
|
tags: e.tags || [],
|
|
4952
4956
|
estimatedHours: e.estimatedHours,
|
|
@@ -4978,6 +4982,7 @@ var ir = $({
|
|
|
4978
4982
|
assigneeId: I().optional().describe("User ID to assign the task to"),
|
|
4979
4983
|
dueDate: I().optional().describe("Due date (ISO string)"),
|
|
4980
4984
|
deadline: I().optional().describe("Latest acceptable finish (YYYY-MM-DD for the end of that working day, or an ISO date-time). Critical path analysis reports a miss as negative slack"),
|
|
4985
|
+
earliestStart: I().optional().describe("Earliest the task may start (YYYY-MM-DD for the start of that day, or an ISO date-time), e.g. when something from outside the project arrives"),
|
|
4981
4986
|
isMilestone: R().optional().describe("Mark the task as a milestone: a zero-duration checkpoint (release, sign-off) fed by dependencies; its estimate is ignored"),
|
|
4982
4987
|
tags: z(I()).optional().describe("Replaces all tags"),
|
|
4983
4988
|
estimatedHours: L().optional().describe("Estimated effort in hours"),
|
|
@@ -5056,18 +5061,21 @@ var ir = $({
|
|
|
5056
5061
|
zodSchema: B({
|
|
5057
5062
|
taskId: I().describe("The task that waits"),
|
|
5058
5063
|
dependsOnTaskId: I().describe("The task that must finish first"),
|
|
5059
|
-
type: H(["blocking", "relates_to"]).optional().describe("'blocking' (default) affects the schedule; 'relates_to' only links the tasks for reference")
|
|
5064
|
+
type: H(["blocking", "relates_to"]).optional().describe("'blocking' (default) affects the schedule; 'relates_to' only links the tasks for reference"),
|
|
5065
|
+
lagHours: L().optional().describe("Working hours to wait after the other task finishes, e.g. 16 for two working days of curing; negative to start that much earlier")
|
|
5060
5066
|
}),
|
|
5061
5067
|
annotations: { idempotentHint: !0 },
|
|
5062
5068
|
execute: async (e, t) => {
|
|
5063
|
-
let n = e.type ?? "blocking", { isEngine:
|
|
5064
|
-
return
|
|
5069
|
+
let n = e.type ?? "blocking", r = e.lagHours === void 0 ? {} : { lagHours: e.lagHours }, { isEngine: i } = await Yn(t);
|
|
5070
|
+
return i ? t.addDependency({
|
|
5065
5071
|
taskId: e.taskId,
|
|
5066
5072
|
dependsOnTaskId: e.dependsOnTaskId,
|
|
5067
|
-
type: n
|
|
5073
|
+
type: n,
|
|
5074
|
+
...r
|
|
5068
5075
|
}) : t.addDependency(e.taskId, {
|
|
5069
5076
|
dependsOnTaskId: e.dependsOnTaskId,
|
|
5070
|
-
type: n
|
|
5077
|
+
type: n,
|
|
5078
|
+
...r
|
|
5071
5079
|
});
|
|
5072
5080
|
}
|
|
5073
5081
|
}), dr = $({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@critical-path/svelte",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.6",
|
|
4
4
|
"description": "Svelte 5 Runes state and reactive integrations for Critical Path headless project management framework",
|
|
5
5
|
"author": "Jack James",
|
|
6
6
|
"license": "MIT",
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@critical-path/client": "0.27.
|
|
22
|
-
"@critical-path/core": "0.
|
|
23
|
-
"@critical-path/mcp": "0.
|
|
21
|
+
"@critical-path/client": "0.27.1",
|
|
22
|
+
"@critical-path/core": "0.57.0",
|
|
23
|
+
"@critical-path/mcp": "0.24.0"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"svelte": "^5.57.2"
|