@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 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.4.0
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 | 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) |
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"}
@@ -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);
@@ -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,6 @@
1
+ export interface RunDoctorOpts {
2
+ tool: string;
3
+ argv: string[];
4
+ }
5
+ export declare function runDoctor({ argv }: RunDoctorOpts): Promise<void>;
6
+ //# sourceMappingURL=doctor-cli.d.ts.map
@@ -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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"}
@@ -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,3 @@
1
+ export { createAsanaTransport } from "./transport-asana.js";
2
+ export { createAdapter } from "./adapter.js";
3
+ //# sourceMappingURL=index.js.map
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAiCH,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,SAAS,YAAY,CAAmB,KAAc,EAAE,GAAM;IAC5D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC;AACrE,CAAC;AAED,SAAS,aAAa,CAAC,CAAU;IAC/B,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACzF,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;IAChE,CAAC;IACD,IACE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnB,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC5B,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EACzB,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;IACnE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;AAChE,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAK9B,OAAO;QACL,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,EAAE,OAAO,EAAE,8CAA8C,EAAE,IAAI,EAAE;KAC3E,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAChE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,UAAU,oBAAoB,CAAC,IAAiC;IACpE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAErB,OAAO;QACL,sEAAsE;QACtE,sDAAsD;QACtD,sEAAsE;QACtE,KAAK,CAAC,UAAU,CAAC,GAAsB;YACrC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW;gBAC3B,CAAC,CAAC,OAAO,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;gBAC3D,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;YACpB,MAAM,WAAW,GAA4B;gBAC3C,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,gBAAgB,EAAE,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC;aAC/E,CAAC;YACF,IAAI,KAAK,KAAK,SAAS;gBAAE,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;YACnD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBACvF,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1F,OAAO,UAAU,CAAC,aAAa,CAAC,CAAC;gBACnC,CAAC;gBACD,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;oBACjE,OAAO,UAAU,CAAC,aAAa,CAAC,CAAC;gBACnC,CAAC;gBACD,IAAI,GAAuB,CAAC;gBAC5B,IAAI,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;oBACpF,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC;gBAC5B,CAAC;gBACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACtF,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC3C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACtC,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,oDAAoD;QACpD,sEAAsE;QACtE,KAAK,CAAC,QAAQ,CAAC,GAAoB;YACjC,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,oCAAoC,EAAE;oBAC9C,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,GAAG,CAAC,MAAM;4BAChB,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,qBAAqB,EAAE,CAAC;yBACnE;qBACF;iBACF,CAAC,CAAC;gBACH,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE;wBACJ,uBAAuB,EAAE,IAAI;wBAC7B,kBAAkB,EAAE,GAAG,CAAC,qBAAqB;qBAC9C;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC3C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACtC,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,oEAAoE;QACpE,sEAAsE;QACtE,KAAK,CAAC,cAAc,CAClB,GAA0B;YAE1B,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,oCAAoC,EAAE;oBAC9C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;iBAC3E,CAAC,CAAC;gBACH,MAAM,aAAa,GACjB,GAAG,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC;gBAC7D,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE;iBACnD,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC3C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACtC,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,mEAAmE;QACnE,iEAAiE;QACjE,4DAA4D;QAC5D,sEAAsE;QACtE,KAAK,CAAC,SAAS,CAAC,GAAqB;YACnC,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,oCAAoC,EAAE;oBAC9C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;iBACjD,CAAC,CAAC;gBACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;YAC9C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC3C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACtC,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,4DAA4D;QAC5D,2DAA2D;QAC3D,uDAAuD;QACvD,sEAAsE;QACtE,KAAK,CAAC,cAAc,CAClB,GAA0B;YAE1B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,gBAAgB,EAAE;iBACvE,CAAC;YACJ,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,oCAAoC,EAAE;oBAC9C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;iBAC/C,CAAC,CAAC;gBACH,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,KAAK,EAAE;iBACnD,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC3C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACtC,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,4DAA4D;QAC5D,kEAAkE;QAClE,sDAAsD;QACtD,sEAAsE;QACtE,KAAK,CAAC,eAAe,CACnB,GAA2B;YAE3B,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,oCAAoC,EAAE;oBAC9C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;iBACtD,CAAC,CAAC;gBACH,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;iBACxD,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC3C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACtC,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,0DAA0D;QAC1D,sEAAsE;QACtE,KAAK,CAAC,cAAc,CAClB,GAA0B;YAE1B,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;YAChF,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,mCAAmC,EAAE;oBAC1D,IAAI,EAAE,GAAG,CAAC,MAAM;oBAChB,IAAI;iBACL,CAAC,CAAC;gBACH,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC/D,OAAO,UAAU,CAAC,kBAAkB,CAAC,CAAC;gBACxC,CAAC;gBACD,MAAM,QAAQ,GACZ,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;oBACrE,CAAC,CAAC,IAAI,CAAC,UAAU;oBACjB,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC/B,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE;iBACxC,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC3C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACtC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llodev/pm-tasks-asana",
3
- "version": "1.4.0",
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.5.0"
54
+ "@llodev/pm-tasks-core": "^1.9.0"
51
55
  },
52
56
  "publishConfig": {
53
57
  "access": "public"
@@ -141,6 +141,7 @@
141
141
  "items": {
142
142
  "enum": [
143
143
  "task.create",
144
+ "task.move",
144
145
  "checklist.check",
145
146
  "task.close",
146
147
  "task.due-date.set",