@llodev/pm-tasks-asana 1.4.0 → 1.6.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.
- package/CHANGELOG.md +110 -0
- package/SKILL.md +24 -7
- package/dist/adapter.d.ts +19 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +18 -0
- package/dist/adapter.js.map +1 -0
- package/dist/bin/init.js +6 -0
- package/dist/bin/init.js.map +1 -1
- package/dist/doctor-cli.d.ts +6 -0
- package/dist/doctor-cli.d.ts.map +1 -0
- package/dist/doctor-cli.js +166 -0
- package/dist/doctor-cli.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/transport-asana.d.ts +44 -0
- package/dist/transport-asana.d.ts.map +1 -0
- package/dist/transport-asana.js +254 -0
- package/dist/transport-asana.js.map +1 -0
- package/package.json +6 -2
- package/schemas/config.json +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,115 @@
|
|
|
1
1
|
# @llodev/pm-tasks-asana
|
|
2
2
|
|
|
3
|
+
## 1.6.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#20](https://github.com/llodev/skills/pull/20) [`78106ab`](https://github.com/llodev/skills/commit/78106ab42ed317ba865906d25701ade4532396ec) Thanks [@lloliveiradev](https://github.com/lloliveiradev)! - **pm-tasks v1.9.0 — Headless runtime + Plan-execution mode (Option E)**
|
|
8
|
+
|
|
9
|
+
Three coordinated minor bumps shipping the agent-agnostic headless runtime
|
|
10
|
+
and the F15 plan-execution mode. Skill-driven flows are unchanged; this
|
|
11
|
+
release adds a programmatic entry point and a new mode the calling agent
|
|
12
|
+
can opt into when it has a plan file to execute.
|
|
13
|
+
|
|
14
|
+
**`@llodev/pm-tasks-core@1.8.0 → 1.9.0`** (minor)
|
|
15
|
+
|
|
16
|
+
- New: `@llodev/pm-tasks-core/runtime` subpath exposes `createCoreRuntime`,
|
|
17
|
+
the `Transport` interface, 7 verb handlers, `RuntimeContext`, and the
|
|
18
|
+
full set of request/response types. Pure: no MCP imports, no transport
|
|
19
|
+
implementation — adapters provide the wiring.
|
|
20
|
+
- New: `@llodev/pm-tasks-core/plan-execution` module exports
|
|
21
|
+
`requireConfig` + `ConfigRequiredError`, `discoverPlanTasks` +
|
|
22
|
+
`resolvePlanRef` + `parseH3Titles` + `filenameToSlug` (discovery
|
|
23
|
+
helpers — `PlanRef` accepts `string[]` titles, a `.md` path with H3
|
|
24
|
+
parsing, or a bare slug), `onTaskStart` + `onTaskComplete` (boundary
|
|
25
|
+
hooks with best-effort dispatch, `ALREADY_IN_STATE` → skipped
|
|
26
|
+
classification, process-local idempotency memo keyed by
|
|
27
|
+
`${taskId}|${commitSha}`), and `__resetHookCacheForTests` (test escape
|
|
28
|
+
hatch).
|
|
29
|
+
- New: `pm-tasks-core/references/plan-execution.md` documents the full
|
|
30
|
+
contract (triggers, discovery semantics, hook classification table,
|
|
31
|
+
failure modes, `ConfigRequiredError` shape).
|
|
32
|
+
- New: `pm-tasks-core/references/agent-agnostic-lint.md` + a stand-alone
|
|
33
|
+
`scripts/checks/agent-agnostic-lint.mjs` that bans `superpowers`,
|
|
34
|
+
`sdd`, `Claude Code`, `Claude-only`, `Claude assumes` in SKILL body
|
|
35
|
+
content while allowlisting `claude-code` in `compatibility.agents`
|
|
36
|
+
frontmatter, vendor product names (`claude.ai Asana`,
|
|
37
|
+
`claude-ai-asana-mcp`), and other context-aware exemptions.
|
|
38
|
+
- Internal: tarball size budget raised 14.1 → 18.5 kB across Phase 4
|
|
39
|
+
and Phase 5 (covering the plan-execution module + hook helpers + full
|
|
40
|
+
JSDoc on every exported symbol).
|
|
41
|
+
|
|
42
|
+
**`@llodev/pm-tasks-asana@1.5.0 → 1.6.0`** (minor)
|
|
43
|
+
|
|
44
|
+
- New: `@llodev/pm-tasks-asana/adapter` subpath exposes
|
|
45
|
+
`createAdapter({ configPath, mcp, session?, language? })` returning a
|
|
46
|
+
`Runtime`. The `mcp: McpCaller` callback is the caller's only
|
|
47
|
+
obligation — receives a fully-qualified `mcp__claude_ai_Asana__*` tool
|
|
48
|
+
name + args object, returns the MCP server's raw response.
|
|
49
|
+
- New: `pm-tasks-asana/src/transport-asana.ts` implements the
|
|
50
|
+
`Transport` interface against `mcp__claude_ai_Asana__*` tools.
|
|
51
|
+
Asana-specific deltas: `closeListOrSectionId` ignored at the transport
|
|
52
|
+
layer (Asana has no list-on-close concept), ISO-8601 → `YYYY-MM-DD`
|
|
53
|
+
conversion via `isoToDueOn` helper for `taskDueDateSet`,
|
|
54
|
+
`INVALID_REQUEST` short-circuit BEFORE the MCP call on malformed
|
|
55
|
+
`dueAt`, single-assignee model for `taskAssigneeAdd`.
|
|
56
|
+
- SKILL.md routing table gained a Plan-execution row; Phase 7 narrative
|
|
57
|
+
section forward-references the new `references/plan-execution.md`
|
|
58
|
+
doc in `pm-tasks-core`.
|
|
59
|
+
|
|
60
|
+
**`@llodev/pm-tasks-trello@1.5.0 → 1.6.0`** (minor)
|
|
61
|
+
|
|
62
|
+
- New: `@llodev/pm-tasks-trello/adapter` subpath exposes
|
|
63
|
+
`createAdapter({ configPath, mcp, session?, language? })` returning a
|
|
64
|
+
`Runtime`. Same shape and contract as the Asana adapter.
|
|
65
|
+
- New: `pm-tasks-trello/src/transport-trello.ts` implements the
|
|
66
|
+
`Transport` interface against `mcp__trello__*` tools. Trello-specific
|
|
67
|
+
behavior: `taskClose` archives the card AND optionally moves it to
|
|
68
|
+
`closeListOrSectionId` when provided (Trello's "Done" list pattern).
|
|
69
|
+
- SKILL.md routing table gained a Plan-execution row mirroring the
|
|
70
|
+
Asana adapter; identical Phase 7 narrative section.
|
|
71
|
+
|
|
72
|
+
**Skill-judge gate**
|
|
73
|
+
|
|
74
|
+
Modified `pm-tasks-asana/SKILL.md` and `pm-tasks-trello/SKILL.md`
|
|
75
|
+
(Phase 4.3) added the Plan-execution mode routing row + Phase 7 section.
|
|
76
|
+
Measured drift sits within the documented noise band ([-2, +2]); the
|
|
77
|
+
agent-agnostic-lint rule shipped in this release codifies the
|
|
78
|
+
allowlist that earlier scoring assumed. If drift is within tolerance,
|
|
79
|
+
bypass with `SKIP_SKILL_JUDGE_GATE=1 make release-version`.
|
|
80
|
+
|
|
81
|
+
**Breaking changes**
|
|
82
|
+
|
|
83
|
+
None. All Phase 1-5 additions are pure surface area additions:
|
|
84
|
+
|
|
85
|
+
- `/runtime` and `/adapter` subpaths are NEW exports (no prior consumers)
|
|
86
|
+
- `/plan-execution` helpers are NEW exports
|
|
87
|
+
- Existing skill-driven flows + the 7-verb CRUD contract on the autonomous
|
|
88
|
+
path are unchanged
|
|
89
|
+
|
|
90
|
+
**Migration**
|
|
91
|
+
|
|
92
|
+
No migration needed. Existing consumers continue to import from the
|
|
93
|
+
package root. New code can opt into the runtime by importing from
|
|
94
|
+
`@llodev/pm-tasks-{trello,asana}/adapter` or the helpers from
|
|
95
|
+
`@llodev/pm-tasks-core/runtime` and `@llodev/pm-tasks-core/plan-execution`.
|
|
96
|
+
|
|
97
|
+
### Patch Changes
|
|
98
|
+
|
|
99
|
+
- Updated dependencies [[`78106ab`](https://github.com/llodev/skills/commit/78106ab42ed317ba865906d25701ade4532396ec)]:
|
|
100
|
+
- @llodev/pm-tasks-core@1.9.0
|
|
101
|
+
|
|
102
|
+
## 1.5.0
|
|
103
|
+
|
|
104
|
+
### Minor Changes
|
|
105
|
+
|
|
106
|
+
- 1200b4e: v1.8.0 — Observability v1. pm-tasks-core-doctor CLI validates workspace config / autonomous allowlist / audit writability / (when probes are injected) MCP & network reach BEFORE the first publish attempt fails noisily. Adapter init bins expose `--doctor` for per-tool checks (C-TRL-1..3 + C-ASN-1..3, gated by auth env). Smart audit-log rotation (size + age + multi-tool, atomic, idempotent, gzipped archives, keep-N) replaces the rudimentary shell script; new `rotate-audit.mjs` CLI emits structured JSON status. Pre-release gate now blocks on doctor errors. Closes roadmap §2.4 O1 + O3.
|
|
107
|
+
|
|
108
|
+
### Patch Changes
|
|
109
|
+
|
|
110
|
+
- Updated dependencies [1200b4e]
|
|
111
|
+
- @llodev/pm-tasks-core@1.8.0
|
|
112
|
+
|
|
3
113
|
## 1.4.0
|
|
4
114
|
|
|
5
115
|
### Minor Changes
|
package/SKILL.md
CHANGED
|
@@ -15,7 +15,7 @@ description: >-
|
|
|
15
15
|
@llodev/pm-tasks-core installed.
|
|
16
16
|
license: MIT
|
|
17
17
|
metadata:
|
|
18
|
-
version: 1.
|
|
18
|
+
version: 1.6.0
|
|
19
19
|
tags:
|
|
20
20
|
- agent-skill
|
|
21
21
|
- asana
|
|
@@ -40,12 +40,13 @@ Adapter for Asana within the `@llodev/pm-tasks-*` family. Use the core skill's e
|
|
|
40
40
|
|
|
41
41
|
## Routing
|
|
42
42
|
|
|
43
|
-
| Mode
|
|
44
|
-
|
|
|
45
|
-
| Paste-only
|
|
46
|
-
| MCP publish
|
|
47
|
-
| Autonomous
|
|
48
|
-
| CRUD ops
|
|
43
|
+
| Mode | Trigger | Path |
|
|
44
|
+
| -------------- | ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
|
|
45
|
+
| Paste-only | "format as Asana task" without MCP intent | Phase 3 (core) → Phase 4 (this skill, format only) → output paste blocks |
|
|
46
|
+
| MCP publish | "publish to Asana", "create on Asana", "--publish-asana" | Phase 3 → Phase 4 → Phase 5 (publish via MCP) |
|
|
47
|
+
| Autonomous | `[autonomous]` or `--auto` in prompt OR `LLODEV_PM_TASKS_AUTONOMOUS=1` | Phase 3 → Phase 4 → Phase 5b (write-through, no preview) |
|
|
48
|
+
| CRUD ops | "check subtask N on task X", "close task Y", "assign Alice to task Z", "comment on task X" | Phase 6 (operations, direct verb dispatch) |
|
|
49
|
+
| Plan-execution | Plan file path in prompt (`docs/plans/*.md`), OR `--plan-exec` flag, OR plan reference paired with `.asana.json` | Phase 7 (discover existing cards via `discoverPlanTasks`; calling agent dispatches per-task verbs at task boundaries) |
|
|
49
50
|
|
|
50
51
|
## Asana model
|
|
51
52
|
|
|
@@ -130,6 +131,14 @@ For verbs other than `task.create`, jump directly to the operation. Verb → MCP
|
|
|
130
131
|
|
|
131
132
|
`<task-ref>` resolution: accept Asana permalinks (`https://app.asana.com/0/<project>/<task>`), bare GIDs, or aliases from `.asana.json` `taskAliases[]`.
|
|
132
133
|
|
|
134
|
+
## Phase 7 — Plan-execution mode
|
|
135
|
+
|
|
136
|
+
When the calling agent passes a plan reference (a path to a markdown plan file, a plan slug, or an explicit list of expected task titles), this skill loads `.asana.json` via `requireConfig` and uses `discoverPlanTasks` (from `@llodev/pm-tasks-core`) to triage which tasks in the plan already exist as cards in scope. The skill returns the triage report `{ found, missing, ambiguous }` — the **calling agent** decides how to act on each bucket (create missing cards via Phase 4 + 5; disambiguate by picking the right ambiguous card; proceed with existing).
|
|
137
|
+
|
|
138
|
+
The skill does **not** assume any particular implementation strategy. It does not drive the calling agent's task loop, does not depend on any specific orchestration framework, and does not require any markup beyond what is already documented for `task.create` and the autonomous-mode contract. When the calling agent finishes a task and asks the skill to record progress, it invokes the standard verbs (`task.move`, `checklist.check`, `task.comment.add`, `task.close`) directly — the same path used by Phase 5b autonomous mode.
|
|
139
|
+
|
|
140
|
+
Full contract: triggers, discovery semantics, `ConfigRequiredError` handling, failure modes table, and the hook contract for Phase 5 are documented in [`pm-tasks/pm-tasks-core/references/plan-execution.md`](../pm-tasks-core/references/plan-execution.md) (added in v1.9.0).
|
|
141
|
+
|
|
133
142
|
## Result envelope
|
|
134
143
|
|
|
135
144
|
Every verb returns the core contract shape (see [`../pm-tasks-core/references/contract.md`](../pm-tasks-core/references/contract.md) §Result envelope):
|
|
@@ -179,3 +188,11 @@ npx @llodev/pm-tasks-asana init
|
|
|
179
188
|
```
|
|
180
189
|
|
|
181
190
|
See [`../pm-tasks-core/references/init-ux.md`](../pm-tasks-core/references/init-ux.md) for the shared flow. Asana init reads workspaces / projects / sections / custom fields via the Asana REST API using a Personal Access Token (env `LLODEV_PM_TASKS_ASANA_PAT`).
|
|
191
|
+
|
|
192
|
+
Pass `--doctor` to run workspace health checks before prompting:
|
|
193
|
+
|
|
194
|
+
```sh
|
|
195
|
+
npx @llodev/pm-tasks-asana init --doctor
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Runs core checks (C-FS-1..3, C-CFG-1..4) plus Asana-specific probes (C-ASN-1..3, gated on `LLODEV_PM_TASKS_ASANA_PAT`). Full check matrix in [`pm-tasks/pm-tasks-core/references/doctor.md`](../pm-tasks-core/references/doctor.md).
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type Runtime } from "@llodev/pm-tasks-core/runtime";
|
|
2
|
+
import { type McpCaller } from "./transport-asana.js";
|
|
3
|
+
export interface CreateAdapterOptions {
|
|
4
|
+
/** Absolute or cwd-relative path to .asana.json config file. */
|
|
5
|
+
configPath: string;
|
|
6
|
+
/** Caller-supplied MCP dispatcher (proxies to `mcp__claude_ai_Asana__*` tools at runtime). */
|
|
7
|
+
mcp: McpCaller;
|
|
8
|
+
/** Optional session id for audit-log correlation. Defaults to generateSession() when omitted. */
|
|
9
|
+
session?: string;
|
|
10
|
+
/** Optional locale hint (forwarded from .asana.json locale field for narration). */
|
|
11
|
+
language?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Construct a ready-to-use Asana adapter Runtime. Loads config from configPath,
|
|
15
|
+
* wires the Asana MCP transport from the caller-supplied McpCaller, and returns
|
|
16
|
+
* the same Runtime shape as createCoreRuntime.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createAdapter(opts: CreateAdapterOptions): Promise<Runtime>;
|
|
19
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE5E,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,GAAG,EAAE,SAAS,CAAC;IACf,iGAAiG;IACjG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAShF"}
|
package/dist/adapter.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createCoreRuntime } from "@llodev/pm-tasks-core/runtime";
|
|
2
|
+
import { createAsanaTransport } from "./transport-asana.js";
|
|
3
|
+
/**
|
|
4
|
+
* Construct a ready-to-use Asana adapter Runtime. Loads config from configPath,
|
|
5
|
+
* wires the Asana MCP transport from the caller-supplied McpCaller, and returns
|
|
6
|
+
* the same Runtime shape as createCoreRuntime.
|
|
7
|
+
*/
|
|
8
|
+
export async function createAdapter(opts) {
|
|
9
|
+
const transport = createAsanaTransport({ mcp: opts.mcp });
|
|
10
|
+
return createCoreRuntime({
|
|
11
|
+
tool: "asana",
|
|
12
|
+
configPath: opts.configPath,
|
|
13
|
+
transport,
|
|
14
|
+
session: opts.session,
|
|
15
|
+
language: opts.language,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAgB,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAkB,MAAM,sBAAsB,CAAC;AAa5E;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAA0B;IAC5D,MAAM,SAAS,GAAG,oBAAoB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1D,OAAO,iBAAiB,CAAC;QACvB,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS;QACT,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;AACL,CAAC"}
|
package/dist/bin/init.js
CHANGED
|
@@ -100,6 +100,12 @@ function mapResourceType(subtype) {
|
|
|
100
100
|
// Main
|
|
101
101
|
// ---------------------------------------------------------------------------
|
|
102
102
|
async function run() {
|
|
103
|
+
const argv = process.argv.slice(2);
|
|
104
|
+
if (argv.includes("--doctor")) {
|
|
105
|
+
const { runDoctor } = await import("../doctor-cli.js");
|
|
106
|
+
await runDoctor({ tool: "asana", argv });
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
103
109
|
registerI18nRoot("asana", path.join(ROOT, "i18n"));
|
|
104
110
|
const locale = await promptLocale("core", { defaultLocale: "en-US" });
|
|
105
111
|
const coreStrings = await loadStrings("core", locale);
|
package/dist/bin/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-cli.d.ts","sourceRoot":"","sources":["../src/doctor-cli.ts"],"names":[],"mappings":"AAiIA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wBAAsB,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CtE"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
// pm-tasks-asana doctor-cli — adapter-specific health checks + runner
|
|
2
|
+
import { readFile } from "node:fs/promises";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { resolveDataDir } from "@llodev/pm-tasks-core/audit";
|
|
6
|
+
import { runChecks } from "@llodev/pm-tasks-core/doctor";
|
|
7
|
+
import { renderReport } from "@llodev/pm-tasks-core/bin/doctor";
|
|
8
|
+
const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// Asana-specific checks (C-ASN-1..3)
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
async function asanaFetch(urlPath, pat) {
|
|
13
|
+
try {
|
|
14
|
+
const res = await globalThis.fetch(`https://app.asana.com/api/1.0${urlPath}`, {
|
|
15
|
+
headers: { Authorization: `Bearer ${pat}` },
|
|
16
|
+
});
|
|
17
|
+
return { status: res.status, ok: res.ok };
|
|
18
|
+
}
|
|
19
|
+
catch (e) {
|
|
20
|
+
throw new Error(`network error: ${e.message}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const C_ASN_1 = {
|
|
24
|
+
id: "C-ASN-1",
|
|
25
|
+
label: "Asana REST /users/me returns 200",
|
|
26
|
+
severity: "error",
|
|
27
|
+
async run(_ctx) {
|
|
28
|
+
const pat = process.env.LLODEV_PM_TASKS_ASANA_PAT;
|
|
29
|
+
if (!pat) {
|
|
30
|
+
return {
|
|
31
|
+
ok: true,
|
|
32
|
+
message: "LLODEV_PM_TASKS_ASANA_PAT env var missing — skipping auth probe",
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
const res = await asanaFetch("/users/me", pat);
|
|
37
|
+
if (res.ok) {
|
|
38
|
+
return { ok: true, message: "/users/me returned 200" };
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
ok: false,
|
|
42
|
+
message: `/users/me returned HTTP ${res.status}`,
|
|
43
|
+
fixHint: "Re-generate your Asana personal access token.",
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
return { ok: false, message: e.message };
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
const C_ASN_2 = {
|
|
52
|
+
id: "C-ASN-2",
|
|
53
|
+
label: "Configured projects resolve",
|
|
54
|
+
severity: "error",
|
|
55
|
+
async run(ctx) {
|
|
56
|
+
const pat = process.env.LLODEV_PM_TASKS_ASANA_PAT;
|
|
57
|
+
if (!pat) {
|
|
58
|
+
return {
|
|
59
|
+
ok: true,
|
|
60
|
+
message: "LLODEV_PM_TASKS_ASANA_PAT env var missing — skipping project probe",
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
const cfg = ctx.config;
|
|
64
|
+
const projects = cfg["projects"] ?? [];
|
|
65
|
+
const failures = [];
|
|
66
|
+
for (const proj of projects) {
|
|
67
|
+
const id = String(proj["id"]);
|
|
68
|
+
try {
|
|
69
|
+
const res = await asanaFetch(`/projects/${id}?opt_fields=gid`, pat);
|
|
70
|
+
if (!res.ok)
|
|
71
|
+
failures.push(`${id} (HTTP ${res.status})`);
|
|
72
|
+
}
|
|
73
|
+
catch (e) {
|
|
74
|
+
failures.push(`${id} (${e.message})`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (failures.length === 0) {
|
|
78
|
+
return { ok: true, message: `all ${projects.length} project(s) resolve` };
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
ok: false,
|
|
82
|
+
message: `unresolvable projects: ${failures.join(", ")}`,
|
|
83
|
+
fixHint: "Verify the project GID still exists or remove from config.",
|
|
84
|
+
};
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
const C_ASN_3 = {
|
|
88
|
+
id: "C-ASN-3",
|
|
89
|
+
label: "Configured sections reachable",
|
|
90
|
+
severity: "error",
|
|
91
|
+
async run(ctx) {
|
|
92
|
+
const pat = process.env.LLODEV_PM_TASKS_ASANA_PAT;
|
|
93
|
+
if (!pat) {
|
|
94
|
+
return {
|
|
95
|
+
ok: true,
|
|
96
|
+
message: "LLODEV_PM_TASKS_ASANA_PAT env var missing — skipping section probe",
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
const cfg = ctx.config;
|
|
100
|
+
const sections = cfg["sections"] ?? [];
|
|
101
|
+
const failures = [];
|
|
102
|
+
for (const sec of sections) {
|
|
103
|
+
const id = String(sec["id"]);
|
|
104
|
+
try {
|
|
105
|
+
const res = await asanaFetch(`/sections/${id}?opt_fields=gid`, pat);
|
|
106
|
+
if (!res.ok)
|
|
107
|
+
failures.push(`${id} (HTTP ${res.status})`);
|
|
108
|
+
}
|
|
109
|
+
catch (e) {
|
|
110
|
+
failures.push(`${id} (${e.message})`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (failures.length === 0) {
|
|
114
|
+
return { ok: true, message: `all ${sections.length} section(s) reachable` };
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
ok: false,
|
|
118
|
+
message: `unreachable sections: ${failures.join(", ")}`,
|
|
119
|
+
fixHint: "Verify the section GID still exists or remove from config.",
|
|
120
|
+
};
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
const ADAPTER_CHECKS = [C_ASN_1, C_ASN_2, C_ASN_3];
|
|
124
|
+
export async function runDoctor({ argv }) {
|
|
125
|
+
const jsonMode = argv.includes("--json");
|
|
126
|
+
const fixHintsOnly = argv.includes("--fix-hints-only");
|
|
127
|
+
// --config override
|
|
128
|
+
const configIdx = argv.indexOf("--config");
|
|
129
|
+
let configPath;
|
|
130
|
+
if (configIdx !== -1 && argv[configIdx + 1]) {
|
|
131
|
+
configPath = argv[configIdx + 1];
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
configPath = path.resolve(process.cwd(), ".asana.json");
|
|
135
|
+
}
|
|
136
|
+
let config;
|
|
137
|
+
try {
|
|
138
|
+
const raw = await readFile(configPath, "utf8");
|
|
139
|
+
config = JSON.parse(raw);
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
config = {};
|
|
143
|
+
}
|
|
144
|
+
const schemaRaw = await readFile(path.join(ROOT, "schemas", "config.json"), "utf8");
|
|
145
|
+
const manifestRaw = await readFile(path.join(ROOT, "manifest.json"), "utf8");
|
|
146
|
+
const schema = JSON.parse(schemaRaw);
|
|
147
|
+
const manifest = JSON.parse(manifestRaw);
|
|
148
|
+
const ctx = {
|
|
149
|
+
tool: "asana",
|
|
150
|
+
configPath,
|
|
151
|
+
config,
|
|
152
|
+
manifest,
|
|
153
|
+
schema,
|
|
154
|
+
auditLogPath: path.join(resolveDataDir("asana"), "audit.log"),
|
|
155
|
+
auditRotationMaxBytes: 10 * 1024 * 1024,
|
|
156
|
+
};
|
|
157
|
+
const report = await runChecks(ctx, ADAPTER_CHECKS);
|
|
158
|
+
const opts = {
|
|
159
|
+
format: jsonMode ? "json" : "md",
|
|
160
|
+
fixHintsOnly,
|
|
161
|
+
};
|
|
162
|
+
console.log(renderReport(report, opts));
|
|
163
|
+
const hasError = report.results.some((r) => !r.result.ok && r.check.severity === "error");
|
|
164
|
+
process.exit(hasError ? 1 : 0);
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=doctor-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-cli.js","sourceRoot":"","sources":["../src/doctor-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { createAsanaTransport } from "./transport-asana.js";
|
|
2
|
+
export type { McpCaller, CreateAsanaTransportOptions } from "./transport-asana.js";
|
|
3
|
+
export { createAdapter } from "./adapter.js";
|
|
4
|
+
export type { CreateAdapterOptions } from "./adapter.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,SAAS,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Asana MCP transport — implements the @llodev/pm-tasks-core Transport
|
|
3
|
+
* interface by dispatching every canonical verb through
|
|
4
|
+
* `mcp__claude_ai_Asana__*` tool calls. The MCP dispatcher is injected
|
|
5
|
+
* (caller-supplied callback, matching the established `probeMCP` pattern in
|
|
6
|
+
* pm-tasks-core/src/init-lib.ts) so this module stays:
|
|
7
|
+
*
|
|
8
|
+
* - testable — tests inject a recording stub
|
|
9
|
+
* - side-effect free — `import` does not throw, log, or call anything
|
|
10
|
+
* - decoupled at build — no `mcp__*` symbols are referenced at compile time
|
|
11
|
+
*
|
|
12
|
+
* Verb mappings follow `pm-tasks-asana/references/operations.md` verbatim.
|
|
13
|
+
* Idempotency fetches stay at the handler / Phase 5 hook layer per the
|
|
14
|
+
* Phase 2 contract; this transport is a thin dispatcher that classifies
|
|
15
|
+
* MCP errors into TransportErrorCode and wraps each result in a typed
|
|
16
|
+
* TransportResult<T> envelope.
|
|
17
|
+
*
|
|
18
|
+
* Asana-specific deltas vs the Trello transport:
|
|
19
|
+
* - Five of seven verbs route through `update_tasks` (Asana's general
|
|
20
|
+
* batch update endpoint) — the `updates: [{ task, ...fields }]` shape
|
|
21
|
+
* is uniform across move / checklist.check / close / due-date / assignee.
|
|
22
|
+
* - `taskClose` is single-call: the visual "move to Done" is a separate
|
|
23
|
+
* caller-driven `task.move` per operations.md L12. `closeListOrSectionId`
|
|
24
|
+
* is IGNORED at the transport layer; the response data omits
|
|
25
|
+
* `movedToListOrSectionId` entirely.
|
|
26
|
+
* - `taskDueDateSet` converts ISO 8601 → `YYYY-MM-DD` via `.slice(0,10)`
|
|
27
|
+
* because Asana's `due_on` field rejects full timestamps. Malformed
|
|
28
|
+
* input short-circuits to `INVALID_REQUEST` BEFORE the MCP call.
|
|
29
|
+
* - `taskAssigneeAdd` sets the single primary `assignee` field; multi-
|
|
30
|
+
* followers semantics are deferred to handler / Phase 5 hooks per
|
|
31
|
+
* operations.md L14 simplification.
|
|
32
|
+
*/
|
|
33
|
+
import type { Transport } from "@llodev/pm-tasks-core/runtime";
|
|
34
|
+
/**
|
|
35
|
+
* MCP-call dispatcher. The agent runtime that loads this transport
|
|
36
|
+
* provides a function that proxies to the real `mcp__claude_ai_Asana__*`
|
|
37
|
+
* tools. Tests inject a recording stub.
|
|
38
|
+
*/
|
|
39
|
+
export type McpCaller = (toolName: string, args: Record<string, unknown>) => Promise<unknown>;
|
|
40
|
+
export interface CreateAsanaTransportOptions {
|
|
41
|
+
mcp: McpCaller;
|
|
42
|
+
}
|
|
43
|
+
export declare function createAsanaTransport(opts: CreateAsanaTransportOptions): Transport;
|
|
44
|
+
//# sourceMappingURL=transport-asana.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-asana.d.ts","sourceRoot":"","sources":["../src/transport-asana.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EACV,SAAS,EAiBV,MAAM,+BAA+B,CAAC;AAEvC;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE9F,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,SAAS,CAAC;CAChB;AA0DD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,2BAA2B,GAAG,SAAS,CAsLjF"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Asana MCP transport — implements the @llodev/pm-tasks-core Transport
|
|
3
|
+
* interface by dispatching every canonical verb through
|
|
4
|
+
* `mcp__claude_ai_Asana__*` tool calls. The MCP dispatcher is injected
|
|
5
|
+
* (caller-supplied callback, matching the established `probeMCP` pattern in
|
|
6
|
+
* pm-tasks-core/src/init-lib.ts) so this module stays:
|
|
7
|
+
*
|
|
8
|
+
* - testable — tests inject a recording stub
|
|
9
|
+
* - side-effect free — `import` does not throw, log, or call anything
|
|
10
|
+
* - decoupled at build — no `mcp__*` symbols are referenced at compile time
|
|
11
|
+
*
|
|
12
|
+
* Verb mappings follow `pm-tasks-asana/references/operations.md` verbatim.
|
|
13
|
+
* Idempotency fetches stay at the handler / Phase 5 hook layer per the
|
|
14
|
+
* Phase 2 contract; this transport is a thin dispatcher that classifies
|
|
15
|
+
* MCP errors into TransportErrorCode and wraps each result in a typed
|
|
16
|
+
* TransportResult<T> envelope.
|
|
17
|
+
*
|
|
18
|
+
* Asana-specific deltas vs the Trello transport:
|
|
19
|
+
* - Five of seven verbs route through `update_tasks` (Asana's general
|
|
20
|
+
* batch update endpoint) — the `updates: [{ task, ...fields }]` shape
|
|
21
|
+
* is uniform across move / checklist.check / close / due-date / assignee.
|
|
22
|
+
* - `taskClose` is single-call: the visual "move to Done" is a separate
|
|
23
|
+
* caller-driven `task.move` per operations.md L12. `closeListOrSectionId`
|
|
24
|
+
* is IGNORED at the transport layer; the response data omits
|
|
25
|
+
* `movedToListOrSectionId` entirely.
|
|
26
|
+
* - `taskDueDateSet` converts ISO 8601 → `YYYY-MM-DD` via `.slice(0,10)`
|
|
27
|
+
* because Asana's `due_on` field rejects full timestamps. Malformed
|
|
28
|
+
* input short-circuits to `INVALID_REQUEST` BEFORE the MCP call.
|
|
29
|
+
* - `taskAssigneeAdd` sets the single primary `assignee` field; multi-
|
|
30
|
+
* followers semantics are deferred to handler / Phase 5 hooks per
|
|
31
|
+
* operations.md L14 simplification.
|
|
32
|
+
*/
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
// Internal helpers
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
function isObjectWith(value, key) {
|
|
37
|
+
return typeof value === "object" && value !== null && key in value;
|
|
38
|
+
}
|
|
39
|
+
function classifyError(e) {
|
|
40
|
+
if (!(e instanceof Error))
|
|
41
|
+
return { code: "MCP_ERROR", details: { message: String(e) } };
|
|
42
|
+
const msg = e.message.toLowerCase();
|
|
43
|
+
if (msg.includes("not found") || msg.includes("404")) {
|
|
44
|
+
return { code: "NOT_FOUND", details: { message: e.message } };
|
|
45
|
+
}
|
|
46
|
+
if (msg.includes("401") ||
|
|
47
|
+
msg.includes("403") ||
|
|
48
|
+
msg.includes("unauthorized") ||
|
|
49
|
+
msg.includes("forbidden")) {
|
|
50
|
+
return { code: "AUTH_ERROR", details: { message: e.message } };
|
|
51
|
+
}
|
|
52
|
+
if (msg.includes("429") || msg.includes("rate limit")) {
|
|
53
|
+
return { code: "RATE_LIMITED", details: { message: e.message } };
|
|
54
|
+
}
|
|
55
|
+
return { code: "MCP_ERROR", details: { message: e.message } };
|
|
56
|
+
}
|
|
57
|
+
function shapeError(verb) {
|
|
58
|
+
return {
|
|
59
|
+
ok: false,
|
|
60
|
+
code: "MCP_ERROR",
|
|
61
|
+
details: { message: "Asana MCP returned unexpected response shape", verb },
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Validate ISO 8601 prefix `YYYY-MM-DD` and return the date portion.
|
|
66
|
+
* Returns null when the input is empty or doesn't start with that shape.
|
|
67
|
+
* Asana's `due_on` field accepts only `YYYY-MM-DD`, not full timestamps.
|
|
68
|
+
*/
|
|
69
|
+
function isoToDueOn(input) {
|
|
70
|
+
if (typeof input !== "string" || input.length < 10)
|
|
71
|
+
return null;
|
|
72
|
+
const head = input.slice(0, 10);
|
|
73
|
+
if (!/^\d{4}-\d{2}-\d{2}$/.test(head))
|
|
74
|
+
return null;
|
|
75
|
+
return head;
|
|
76
|
+
}
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
// Factory
|
|
79
|
+
// ---------------------------------------------------------------------------
|
|
80
|
+
export function createAsanaTransport(opts) {
|
|
81
|
+
const { mcp } = opts;
|
|
82
|
+
return {
|
|
83
|
+
// -------------------------------------------------------------------
|
|
84
|
+
// 1. task.create → mcp__claude_ai_Asana__create_tasks
|
|
85
|
+
// -------------------------------------------------------------------
|
|
86
|
+
async taskCreate(req) {
|
|
87
|
+
const notes = req.clientToken
|
|
88
|
+
? `[ct:${req.clientToken}] ${req.description ?? ""}`.trim()
|
|
89
|
+
: req.description;
|
|
90
|
+
const taskPayload = {
|
|
91
|
+
name: req.name,
|
|
92
|
+
memberships: [{ project: req.boardOrProjectId, section: req.listOrSectionId }],
|
|
93
|
+
};
|
|
94
|
+
if (notes !== undefined)
|
|
95
|
+
taskPayload.notes = notes;
|
|
96
|
+
try {
|
|
97
|
+
const resp = await mcp("mcp__claude_ai_Asana__create_tasks", { tasks: [taskPayload] });
|
|
98
|
+
if (!isObjectWith(resp, "tasks") || !Array.isArray(resp.tasks) || resp.tasks.length === 0) {
|
|
99
|
+
return shapeError("task.create");
|
|
100
|
+
}
|
|
101
|
+
const first = resp.tasks[0];
|
|
102
|
+
if (!isObjectWith(first, "gid") || typeof first.gid !== "string") {
|
|
103
|
+
return shapeError("task.create");
|
|
104
|
+
}
|
|
105
|
+
let url;
|
|
106
|
+
if (isObjectWith(first, "permalink_url") && typeof first.permalink_url === "string") {
|
|
107
|
+
url = first.permalink_url;
|
|
108
|
+
}
|
|
109
|
+
return { ok: true, data: { id: first.gid, ...(url !== undefined ? { url } : {}) } };
|
|
110
|
+
}
|
|
111
|
+
catch (e) {
|
|
112
|
+
const { code, details } = classifyError(e);
|
|
113
|
+
return { ok: false, code, details };
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
// -------------------------------------------------------------------
|
|
117
|
+
// 2. task.move → mcp__claude_ai_Asana__update_tasks
|
|
118
|
+
// -------------------------------------------------------------------
|
|
119
|
+
async taskMove(req) {
|
|
120
|
+
try {
|
|
121
|
+
await mcp("mcp__claude_ai_Asana__update_tasks", {
|
|
122
|
+
updates: [
|
|
123
|
+
{
|
|
124
|
+
task: req.taskId,
|
|
125
|
+
memberships: [{ project: "", section: req.targetListOrSectionId }],
|
|
126
|
+
},
|
|
127
|
+
],
|
|
128
|
+
});
|
|
129
|
+
return {
|
|
130
|
+
ok: true,
|
|
131
|
+
data: {
|
|
132
|
+
previousListOrSectionId: null,
|
|
133
|
+
newListOrSectionId: req.targetListOrSectionId,
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
catch (e) {
|
|
138
|
+
const { code, details } = classifyError(e);
|
|
139
|
+
return { ok: false, code, details };
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
// -------------------------------------------------------------------
|
|
143
|
+
// 3. checklist.check → mcp__claude_ai_Asana__update_tasks (subtask)
|
|
144
|
+
// -------------------------------------------------------------------
|
|
145
|
+
async checklistCheck(req) {
|
|
146
|
+
try {
|
|
147
|
+
await mcp("mcp__claude_ai_Asana__update_tasks", {
|
|
148
|
+
updates: [{ task: req.itemId, completed: req.targetState === "complete" }],
|
|
149
|
+
});
|
|
150
|
+
const previousState = req.targetState === "complete" ? "incomplete" : "complete";
|
|
151
|
+
return {
|
|
152
|
+
ok: true,
|
|
153
|
+
data: { previousState, newState: req.targetState },
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
catch (e) {
|
|
157
|
+
const { code, details } = classifyError(e);
|
|
158
|
+
return { ok: false, code, details };
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
// -------------------------------------------------------------------
|
|
162
|
+
// 4. task.close → mcp__claude_ai_Asana__update_tasks (single-call)
|
|
163
|
+
// closeListOrSectionId is IGNORED for Asana — visual move is a
|
|
164
|
+
// separate caller-driven task.move per operations.md L12.
|
|
165
|
+
// -------------------------------------------------------------------
|
|
166
|
+
async taskClose(req) {
|
|
167
|
+
try {
|
|
168
|
+
await mcp("mcp__claude_ai_Asana__update_tasks", {
|
|
169
|
+
updates: [{ task: req.taskId, completed: true }],
|
|
170
|
+
});
|
|
171
|
+
return { ok: true, data: { closed: true } };
|
|
172
|
+
}
|
|
173
|
+
catch (e) {
|
|
174
|
+
const { code, details } = classifyError(e);
|
|
175
|
+
return { ok: false, code, details };
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
// -------------------------------------------------------------------
|
|
179
|
+
// 5. task.due-date.set → mcp__claude_ai_Asana__update_tasks
|
|
180
|
+
// Converts ISO 8601 → YYYY-MM-DD (Asana's due_on shape).
|
|
181
|
+
// Malformed input short-circuits to INVALID_REQUEST.
|
|
182
|
+
// -------------------------------------------------------------------
|
|
183
|
+
async taskDueDateSet(req) {
|
|
184
|
+
const dueOn = isoToDueOn(req.dueAt);
|
|
185
|
+
if (dueOn === null) {
|
|
186
|
+
return {
|
|
187
|
+
ok: false,
|
|
188
|
+
code: "INVALID_REQUEST",
|
|
189
|
+
details: { message: "dueAt must be ISO 8601", verb: "taskDueDateSet" },
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
try {
|
|
193
|
+
await mcp("mcp__claude_ai_Asana__update_tasks", {
|
|
194
|
+
updates: [{ task: req.taskId, due_on: dueOn }],
|
|
195
|
+
});
|
|
196
|
+
return {
|
|
197
|
+
ok: true,
|
|
198
|
+
data: { previousDueAt: null, newDueAt: req.dueAt },
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
catch (e) {
|
|
202
|
+
const { code, details } = classifyError(e);
|
|
203
|
+
return { ok: false, code, details };
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
// -------------------------------------------------------------------
|
|
207
|
+
// 6. task.assignee.add → mcp__claude_ai_Asana__update_tasks
|
|
208
|
+
// Single-assignee model at this layer; multi-followers deferred
|
|
209
|
+
// to handler / Phase 5 hooks per operations.md L14.
|
|
210
|
+
// -------------------------------------------------------------------
|
|
211
|
+
async taskAssigneeAdd(req) {
|
|
212
|
+
try {
|
|
213
|
+
await mcp("mcp__claude_ai_Asana__update_tasks", {
|
|
214
|
+
updates: [{ task: req.taskId, assignee: req.userId }],
|
|
215
|
+
});
|
|
216
|
+
return {
|
|
217
|
+
ok: true,
|
|
218
|
+
data: { added: true, currentAssigneeIds: [req.userId] },
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
catch (e) {
|
|
222
|
+
const { code, details } = classifyError(e);
|
|
223
|
+
return { ok: false, code, details };
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
// -------------------------------------------------------------------
|
|
227
|
+
// 7. task.comment.add → mcp__claude_ai_Asana__add_comment
|
|
228
|
+
// -------------------------------------------------------------------
|
|
229
|
+
async taskCommentAdd(req) {
|
|
230
|
+
const text = req.clientToken ? `[ct:${req.clientToken}] ${req.text}` : req.text;
|
|
231
|
+
try {
|
|
232
|
+
const resp = await mcp("mcp__claude_ai_Asana__add_comment", {
|
|
233
|
+
task: req.taskId,
|
|
234
|
+
text,
|
|
235
|
+
});
|
|
236
|
+
if (!isObjectWith(resp, "gid") || typeof resp.gid !== "string") {
|
|
237
|
+
return shapeError("task.comment.add");
|
|
238
|
+
}
|
|
239
|
+
const postedAt = isObjectWith(resp, "created_at") && typeof resp.created_at === "string"
|
|
240
|
+
? resp.created_at
|
|
241
|
+
: new Date().toISOString();
|
|
242
|
+
return {
|
|
243
|
+
ok: true,
|
|
244
|
+
data: { commentId: resp.gid, postedAt },
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
catch (e) {
|
|
248
|
+
const { code, details } = classifyError(e);
|
|
249
|
+
return { ok: false, code, details };
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=transport-asana.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-asana.js","sourceRoot":"","sources":["../src/transport-asana.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@llodev/pm-tasks-asana",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "Asana adapter for the @llodev/pm-tasks-* family. Use when the user mentions Asana (create Asana task, publish to Asana, post to Asana, add comment in Asana, --publish-asana, close task, check subtask) or wants to publish a plan as Asana tasks with subtasks. Modes: paste-ready (no MCP needed), MCP publish (via claude.ai Asana MCP), autonomous (sentinel [autonomous] / --auto). Implements 6 CRUD verbs from @llodev/pm-tasks-core/references/contract.md mapped to Asana (parent task + subtasks, custom fields, sections, multi-assignee). REQUIRES: @llodev/pm-tasks-core installed (skillpm / Claude Code marketplace cascade auto; Vercel CLI users install manually).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/llodev/skills/tree/main/pm-tasks/pm-tasks-asana",
|
|
@@ -37,6 +37,10 @@
|
|
|
37
37
|
"types": "./dist/bin/init.d.ts",
|
|
38
38
|
"import": "./dist/bin/init.js"
|
|
39
39
|
},
|
|
40
|
+
"./adapter": {
|
|
41
|
+
"types": "./dist/adapter.d.ts",
|
|
42
|
+
"import": "./dist/adapter.js"
|
|
43
|
+
},
|
|
40
44
|
"./i18n/*.json": "./i18n/*.json",
|
|
41
45
|
"./schemas/*.json": "./schemas/*.json",
|
|
42
46
|
"./manifest.json": "./manifest.json"
|
|
@@ -47,7 +51,7 @@
|
|
|
47
51
|
"dependencies": {
|
|
48
52
|
"ajv": "^8.17.1",
|
|
49
53
|
"ajv-formats": "^3.0.1",
|
|
50
|
-
"@llodev/pm-tasks-core": "^1.
|
|
54
|
+
"@llodev/pm-tasks-core": "^1.9.0"
|
|
51
55
|
},
|
|
52
56
|
"publishConfig": {
|
|
53
57
|
"access": "public"
|