aibroker 0.18.0 → 0.20.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/dist/daemon/todoist-cli.d.ts.map +1 -1
- package/dist/daemon/todoist-cli.js +10 -4
- package/dist/daemon/todoist-cli.js.map +1 -1
- package/dist/daemon/todoist-ingress.d.ts +28 -0
- package/dist/daemon/todoist-ingress.d.ts.map +1 -1
- package/dist/daemon/todoist-ingress.js +32 -1
- package/dist/daemon/todoist-ingress.js.map +1 -1
- package/dist/daemon/todoist-projects.d.ts +34 -0
- package/dist/daemon/todoist-projects.d.ts.map +1 -0
- package/dist/daemon/todoist-projects.js +80 -0
- package/dist/daemon/todoist-projects.js.map +1 -0
- package/dist/daemon/todoist-webhook.d.ts +16 -0
- package/dist/daemon/todoist-webhook.d.ts.map +1 -1
- package/dist/daemon/todoist-webhook.js +82 -3
- package/dist/daemon/todoist-webhook.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todoist-cli.d.ts","sourceRoot":"","sources":["../../src/daemon/todoist-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"todoist-cli.d.ts","sourceRoot":"","sources":["../../src/daemon/todoist-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAuBH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiG9D"}
|
|
@@ -16,6 +16,7 @@ function usage() {
|
|
|
16
16
|
console.log(" status Show whether an authorisation is on file");
|
|
17
17
|
console.log(" ingress list Projects allowed to reach a session");
|
|
18
18
|
console.log(" ingress add <id> [=owner] Grant a project ingress, effective immediately");
|
|
19
|
+
console.log(" --subtree ...and every project nested under it");
|
|
19
20
|
console.log(" ingress remove <id> Revoke a grant");
|
|
20
21
|
console.log("");
|
|
21
22
|
console.log(`Default scope: ${DEFAULT_SCOPE}. Add data:delete only if the bridge should remove tasks.`);
|
|
@@ -82,20 +83,25 @@ export async function runTodoist(args) {
|
|
|
82
83
|
const grants = listGrants();
|
|
83
84
|
console.log(grants.length ? "\nGranted at runtime:" : "\nNo runtime grants.");
|
|
84
85
|
for (const g of grants) {
|
|
85
|
-
console.log(` ${g.projectId}${g.projectName ? ` (${g.projectName})` : ""} → ${g.owner ?? "(default owner)"} since ${g.grantedAt.slice(0, 10)}`);
|
|
86
|
+
console.log(` ${g.projectId}${g.projectName ? ` (${g.projectName})` : ""} → ${g.owner ?? "(default owner)"}${g.subtree ? " + descendants" : ""} since ${g.grantedAt.slice(0, 10)}`);
|
|
86
87
|
}
|
|
87
88
|
break;
|
|
88
89
|
}
|
|
89
90
|
if (action === "add") {
|
|
90
91
|
if (!arg) {
|
|
91
|
-
console.error("Usage: aibroker todoist ingress add <projectId>[=owner] [--name <label>]");
|
|
92
|
+
console.error("Usage: aibroker todoist ingress add <projectId>[=owner] [--name <label>] [--subtree]");
|
|
92
93
|
process.exit(1);
|
|
93
94
|
}
|
|
94
95
|
const [projectId, owner] = arg.split("=").map((s) => s.trim());
|
|
95
96
|
const nameIdx = rest.indexOf("--name");
|
|
96
97
|
const projectName = nameIdx !== -1 ? rest[nameIdx + 1] : undefined;
|
|
97
|
-
const
|
|
98
|
-
|
|
98
|
+
const subtree = rest.includes("--subtree");
|
|
99
|
+
const g = grantIngress(projectId, { owner: owner || undefined, projectName, subtree });
|
|
100
|
+
console.log(`Granted ${g.projectName ?? g.projectId} → ${g.owner ?? "(default owner)"}${g.subtree ? " and every project under it" : ""}. Effective immediately.`);
|
|
101
|
+
if (subtree) {
|
|
102
|
+
console.log("Sub-projects inherit this owner. A project shared with you and later moved");
|
|
103
|
+
console.log("under this one would inherit it too — grant subtrees to roots you own.");
|
|
104
|
+
}
|
|
99
105
|
break;
|
|
100
106
|
}
|
|
101
107
|
if (action === "remove") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todoist-cli.js","sourceRoot":"","sources":["../../src/daemon/todoist-cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"todoist-cli.js","sourceRoot":"","sources":["../../src/daemon/todoist-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,21 @@
|
|
|
22
22
|
import type { WebhookConfig } from "./todoist-webhook.js";
|
|
23
23
|
export interface IngressGrant {
|
|
24
24
|
projectId: string;
|
|
25
|
+
/**
|
|
26
|
+
* Does this grant cover the project's descendants?
|
|
27
|
+
*
|
|
28
|
+
* Opt-in per grant, deliberately. A sub-project is a folder, not a second
|
|
29
|
+
* owner: someone organising their work into "Jobs Matthias / Executive
|
|
30
|
+
* Search" has not made a decision about execution ingress, and before this
|
|
31
|
+
* existed those tasks were refused with "not an ingress project" — silently,
|
|
32
|
+
* and exactly when they tidied up.
|
|
33
|
+
*
|
|
34
|
+
* Still not implicit inheritance: granting a subtree is a decision, made
|
|
35
|
+
* once, and the residual risk is worth stating. A project shared with you and
|
|
36
|
+
* later moved under a granted root inherits execution rights nobody
|
|
37
|
+
* considered for it. Grant subtrees to roots you own.
|
|
38
|
+
*/
|
|
39
|
+
subtree?: boolean;
|
|
25
40
|
/** Human-readable, for the CLI and for reading the file a month from now. */
|
|
26
41
|
projectName?: string;
|
|
27
42
|
/** Session that owns work filed here. Unset falls through to the default. */
|
|
@@ -46,6 +61,7 @@ export declare function projectForOwner(owner: string): IngressGrant | undefined
|
|
|
46
61
|
export declare function grantIngress(projectId: string, opts?: {
|
|
47
62
|
owner?: string;
|
|
48
63
|
projectName?: string;
|
|
64
|
+
subtree?: boolean;
|
|
49
65
|
}): IngressGrant;
|
|
50
66
|
/** Revoke a grant. Returns whether anything was there to revoke. */
|
|
51
67
|
export declare function revokeIngress(projectId: string): boolean;
|
|
@@ -57,4 +73,16 @@ export declare function revokeIngress(projectId: string): boolean;
|
|
|
57
73
|
* Returns a new object — the caller's config is never mutated.
|
|
58
74
|
*/
|
|
59
75
|
export declare function applyGrants(cfg: WebhookConfig): WebhookConfig;
|
|
76
|
+
/**
|
|
77
|
+
* Allow a project reachable through an ancestor that granted its subtree.
|
|
78
|
+
*
|
|
79
|
+
* Returns a config with that project added, so everything downstream — the
|
|
80
|
+
* boundary check, the owner lookup, comment routing via a parent task — works
|
|
81
|
+
* unchanged. The owner is inherited from the nearest granting ancestor, because
|
|
82
|
+
* a folder is not a second owner.
|
|
83
|
+
*
|
|
84
|
+
* Returns the config untouched when nothing applies, so the ordinary path costs
|
|
85
|
+
* nothing.
|
|
86
|
+
*/
|
|
87
|
+
export declare function expandThroughSubtree(cfg: WebhookConfig, projectId: string, ancestors: string[]): WebhookConfig;
|
|
60
88
|
//# sourceMappingURL=todoist-ingress.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todoist-ingress.d.ts","sourceRoot":"","sources":["../../src/daemon/todoist-ingress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAkBD,wBAAgB,UAAU,IAAI,YAAY,EAAE,CAE3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAKvE;AAED,gEAAgE;AAChE,wBAAgB,YAAY,
|
|
1
|
+
{"version":3,"file":"todoist-ingress.d.ts","sourceRoot":"","sources":["../../src/daemon/todoist-ingress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAkBD,wBAAgB,UAAU,IAAI,YAAY,EAAE,CAE3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAKvE;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GACrE,YAAY,CAoBd;AAED,oEAAoE;AACpE,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAYxD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa,CAW7D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EAAE,GAClB,aAAa,CAef"}
|
|
@@ -68,13 +68,15 @@ export function grantIngress(projectId, opts = {}) {
|
|
|
68
68
|
grant.owner = opts.owner;
|
|
69
69
|
if (opts.projectName !== undefined)
|
|
70
70
|
grant.projectName = opts.projectName;
|
|
71
|
+
if (opts.subtree !== undefined)
|
|
72
|
+
grant.subtree = opts.subtree;
|
|
71
73
|
if (!existing)
|
|
72
74
|
s.grants.push(grant);
|
|
73
75
|
saveJson(FILE, s);
|
|
74
76
|
audit({
|
|
75
77
|
action: "ingress", actor: "aibroker", target: `todoist:project:${projectId}`,
|
|
76
78
|
outcome: existing ? "updated" : "granted",
|
|
77
|
-
reason: `${opts.projectName ?? projectId} → ${grant.owner ?? "(default owner)"}`,
|
|
79
|
+
reason: `${opts.projectName ?? projectId} → ${grant.owner ?? "(default owner)"}${grant.subtree ? " (and descendants)" : ""}`,
|
|
78
80
|
});
|
|
79
81
|
log(`todoist-ingress: ${existing ? "updated" : "granted"} ${opts.projectName ?? projectId} → ${grant.owner ?? "default"}`);
|
|
80
82
|
return grant;
|
|
@@ -114,4 +116,33 @@ export function applyGrants(cfg) {
|
|
|
114
116
|
}
|
|
115
117
|
return { ...cfg, ingressProjectIds: ids, projectOwners: owners };
|
|
116
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* Allow a project reachable through an ancestor that granted its subtree.
|
|
121
|
+
*
|
|
122
|
+
* Returns a config with that project added, so everything downstream — the
|
|
123
|
+
* boundary check, the owner lookup, comment routing via a parent task — works
|
|
124
|
+
* unchanged. The owner is inherited from the nearest granting ancestor, because
|
|
125
|
+
* a folder is not a second owner.
|
|
126
|
+
*
|
|
127
|
+
* Returns the config untouched when nothing applies, so the ordinary path costs
|
|
128
|
+
* nothing.
|
|
129
|
+
*/
|
|
130
|
+
export function expandThroughSubtree(cfg, projectId, ancestors) {
|
|
131
|
+
if (!projectId || cfg.ingressProjectIds.has(projectId))
|
|
132
|
+
return cfg;
|
|
133
|
+
const grants = listGrants();
|
|
134
|
+
for (const ancestorId of ancestors) {
|
|
135
|
+
const g = grants.find((x) => x.projectId === ancestorId && x.subtree);
|
|
136
|
+
if (!g)
|
|
137
|
+
continue;
|
|
138
|
+
const ids = new Set(cfg.ingressProjectIds);
|
|
139
|
+
ids.add(projectId);
|
|
140
|
+
const owners = new Map(cfg.projectOwners);
|
|
141
|
+
const owner = g.owner ?? cfg.projectOwners.get(ancestorId);
|
|
142
|
+
if (owner)
|
|
143
|
+
owners.set(projectId, owner);
|
|
144
|
+
return { ...cfg, ingressProjectIds: ids, projectOwners: owners };
|
|
145
|
+
}
|
|
146
|
+
return cfg;
|
|
147
|
+
}
|
|
117
148
|
//# sourceMappingURL=todoist-ingress.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todoist-ingress.js","sourceRoot":"","sources":["../../src/daemon/todoist-ingress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAGrC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"todoist-ingress.js","sourceRoot":"","sources":["../../src/daemon/todoist-ingress.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* daemon/todoist-projects.ts — the project tree, cached.
|
|
3
|
+
*
|
|
4
|
+
* Needed because ingress can be granted to a subtree: a project that is not
|
|
5
|
+
* itself listed may still be reachable through an ancestor that is. Answering
|
|
6
|
+
* that requires knowing who a project's parent is, which is not in the webhook
|
|
7
|
+
* payload.
|
|
8
|
+
*
|
|
9
|
+
* Cached with a short TTL rather than fetched per event. A webhook arrives in
|
|
10
|
+
* bursts — a task added, a label applied, a comment posted, all within seconds —
|
|
11
|
+
* and one project listing per event is exactly the kind of load that produced
|
|
12
|
+
* the 401 bursts that cost two claims on 2026-08-01.
|
|
13
|
+
*
|
|
14
|
+
* Everything here keys on ID, never on name. Todoist's project search returns
|
|
15
|
+
* nothing for names containing emoji, so "Executive Search 🎯" is invisible to a
|
|
16
|
+
* name query — a resolver that fell back to matching names would silently find
|
|
17
|
+
* no project and report it as absent rather than unsearchable.
|
|
18
|
+
*/
|
|
19
|
+
export interface ProjectNode {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
parentId?: string;
|
|
23
|
+
}
|
|
24
|
+
/** Drop the cache — used after a grant, and by tests. */
|
|
25
|
+
export declare function invalidateProjectTree(): void;
|
|
26
|
+
export declare function projectTree(fetchImpl?: typeof fetch): Promise<Map<string, ProjectNode>>;
|
|
27
|
+
/**
|
|
28
|
+
* The chain from a project up to the root, nearest ancestor first.
|
|
29
|
+
*
|
|
30
|
+
* Depth-capped: a cycle in the data would otherwise hang the receiver, and a
|
|
31
|
+
* hung receiver is indistinguishable from a webhook that never arrived.
|
|
32
|
+
*/
|
|
33
|
+
export declare function ancestorsOf(projectId: string, tree: Map<string, ProjectNode>, maxDepth?: number): string[];
|
|
34
|
+
//# sourceMappingURL=todoist-projects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todoist-projects.d.ts","sourceRoot":"","sources":["../../src/daemon/todoist-projects.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,yDAAyD;AACzD,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,wBAAsB,WAAW,CAAC,SAAS,GAAE,OAAO,KAAa,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAiCpG;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,QAAQ,SAAK,GAAG,MAAM,EAAE,CAUtG"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* daemon/todoist-projects.ts — the project tree, cached.
|
|
3
|
+
*
|
|
4
|
+
* Needed because ingress can be granted to a subtree: a project that is not
|
|
5
|
+
* itself listed may still be reachable through an ancestor that is. Answering
|
|
6
|
+
* that requires knowing who a project's parent is, which is not in the webhook
|
|
7
|
+
* payload.
|
|
8
|
+
*
|
|
9
|
+
* Cached with a short TTL rather than fetched per event. A webhook arrives in
|
|
10
|
+
* bursts — a task added, a label applied, a comment posted, all within seconds —
|
|
11
|
+
* and one project listing per event is exactly the kind of load that produced
|
|
12
|
+
* the 401 bursts that cost two claims on 2026-08-01.
|
|
13
|
+
*
|
|
14
|
+
* Everything here keys on ID, never on name. Todoist's project search returns
|
|
15
|
+
* nothing for names containing emoji, so "Executive Search 🎯" is invisible to a
|
|
16
|
+
* name query — a resolver that fell back to matching names would silently find
|
|
17
|
+
* no project and report it as absent rather than unsearchable.
|
|
18
|
+
*/
|
|
19
|
+
import { getAccessToken } from "./todoist-oauth.js";
|
|
20
|
+
import { log } from "../core/log.js";
|
|
21
|
+
const TTL_MS = 5 * 60 * 1000;
|
|
22
|
+
let cache;
|
|
23
|
+
/** Drop the cache — used after a grant, and by tests. */
|
|
24
|
+
export function invalidateProjectTree() {
|
|
25
|
+
cache = undefined;
|
|
26
|
+
}
|
|
27
|
+
export async function projectTree(fetchImpl = fetch) {
|
|
28
|
+
if (cache && Date.now() - cache.at < TTL_MS)
|
|
29
|
+
return cache.byId;
|
|
30
|
+
const token = await getAccessToken();
|
|
31
|
+
if (!token)
|
|
32
|
+
return cache?.byId ?? new Map();
|
|
33
|
+
try {
|
|
34
|
+
const res = await fetchImpl("https://api.todoist.com/api/v1/projects", {
|
|
35
|
+
headers: { authorization: `${token.token_type} ${token.access_token}` },
|
|
36
|
+
});
|
|
37
|
+
if (!res.ok)
|
|
38
|
+
throw new Error(`projects listing failed with ${res.status}`);
|
|
39
|
+
const body = JSON.parse(await res.text());
|
|
40
|
+
const list = Array.isArray(body) ? body : (body.results ?? []);
|
|
41
|
+
const byId = new Map();
|
|
42
|
+
for (const p of list) {
|
|
43
|
+
const o = p;
|
|
44
|
+
if (!o.id)
|
|
45
|
+
continue;
|
|
46
|
+
byId.set(o.id, {
|
|
47
|
+
id: o.id,
|
|
48
|
+
name: o.name ?? "",
|
|
49
|
+
parentId: o.parent_id ?? o.parentId ?? undefined,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
cache = { at: Date.now(), byId };
|
|
53
|
+
return byId;
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
// A stale tree beats no tree: losing it would silently narrow the ingress
|
|
57
|
+
// boundary, and a project dropping out of scope is the failure that looks
|
|
58
|
+
// like "nothing happened".
|
|
59
|
+
log(`todoist-projects: could not refresh the tree — ${e instanceof Error ? e.message : String(e)}`);
|
|
60
|
+
return cache?.byId ?? new Map();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The chain from a project up to the root, nearest ancestor first.
|
|
65
|
+
*
|
|
66
|
+
* Depth-capped: a cycle in the data would otherwise hang the receiver, and a
|
|
67
|
+
* hung receiver is indistinguishable from a webhook that never arrived.
|
|
68
|
+
*/
|
|
69
|
+
export function ancestorsOf(projectId, tree, maxDepth = 12) {
|
|
70
|
+
const chain = [];
|
|
71
|
+
let current = tree.get(projectId)?.parentId;
|
|
72
|
+
const seen = new Set([projectId]);
|
|
73
|
+
while (current && chain.length < maxDepth && !seen.has(current)) {
|
|
74
|
+
chain.push(current);
|
|
75
|
+
seen.add(current);
|
|
76
|
+
current = tree.get(current)?.parentId;
|
|
77
|
+
}
|
|
78
|
+
return chain;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=todoist-projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todoist-projects.js","sourceRoot":"","sources":["../../src/daemon/todoist-projects.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,6 +54,22 @@ export declare const RUNNING_LABEL = "pai-running";
|
|
|
54
54
|
* the first time someone ticks it.
|
|
55
55
|
*/
|
|
56
56
|
export declare function isTrigger(data: Record<string, unknown>): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Did this update turn an unroutable task into a routable one?
|
|
59
|
+
*
|
|
60
|
+
* Routable means both halves of the boundary are satisfied: the task sits in an
|
|
61
|
+
* ingress project AND names an owner. Either alone is not enough — the project
|
|
62
|
+
* is the security boundary, the label or project mapping is the address.
|
|
63
|
+
*
|
|
64
|
+
* Needs `event_data_extra.old_item`, which Todoist includes for updates a user
|
|
65
|
+
* made directly. Without it there is no transition to observe and the update is
|
|
66
|
+
* ignored, which is the safe direction: acting would mean dispatching on an
|
|
67
|
+
* edit we cannot characterise.
|
|
68
|
+
*/
|
|
69
|
+
export declare function routabilityTransition(e: TodoistEvent, cfg: WebhookConfig): {
|
|
70
|
+
becameRoutable: boolean;
|
|
71
|
+
reason: string;
|
|
72
|
+
};
|
|
57
73
|
export interface TodoistEvent {
|
|
58
74
|
event_name: string;
|
|
59
75
|
user_id?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todoist-webhook.d.ts","sourceRoot":"","sources":["../../src/daemon/todoist-webhook.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"todoist-webhook.d.ts","sourceRoot":"","sources":["../../src/daemon/todoist-webhook.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,6 +62,53 @@ export function isTrigger(data) {
|
|
|
62
62
|
const due = data.due;
|
|
63
63
|
return Boolean(due?.is_recurring) && labels.some((l) => l.toLowerCase().startsWith("pai:"));
|
|
64
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Did this update turn an unroutable task into a routable one?
|
|
67
|
+
*
|
|
68
|
+
* Routable means both halves of the boundary are satisfied: the task sits in an
|
|
69
|
+
* ingress project AND names an owner. Either alone is not enough — the project
|
|
70
|
+
* is the security boundary, the label or project mapping is the address.
|
|
71
|
+
*
|
|
72
|
+
* Needs `event_data_extra.old_item`, which Todoist includes for updates a user
|
|
73
|
+
* made directly. Without it there is no transition to observe and the update is
|
|
74
|
+
* ignored, which is the safe direction: acting would mean dispatching on an
|
|
75
|
+
* edit we cannot characterise.
|
|
76
|
+
*/
|
|
77
|
+
export function routabilityTransition(e, cfg) {
|
|
78
|
+
const old = e.event_data_extra?.old_item;
|
|
79
|
+
if (!old) {
|
|
80
|
+
return { becameRoutable: false, reason: "event item:updated is not actionable (no previous state to compare)" };
|
|
81
|
+
}
|
|
82
|
+
// A completion arrives as its own event; an update that merely reports one
|
|
83
|
+
// must not be read as a routing change.
|
|
84
|
+
const intent = e.event_data_extra?.update_intent;
|
|
85
|
+
if (intent === "item_completed" || intent === "item_uncompleted") {
|
|
86
|
+
return { becameRoutable: false, reason: `event item:updated is not actionable (${String(intent)})` };
|
|
87
|
+
}
|
|
88
|
+
const routable = (d) => {
|
|
89
|
+
if (!d)
|
|
90
|
+
return false;
|
|
91
|
+
const projectId = typeof d.project_id === "string" ? d.project_id : "";
|
|
92
|
+
if (!cfg.ingressProjectIds.has(projectId))
|
|
93
|
+
return false;
|
|
94
|
+
const labels = Array.isArray(d.labels) ? d.labels.map(String) : [];
|
|
95
|
+
const hasOwner = labels.some((l) => l.toLowerCase().startsWith("pai:")) ||
|
|
96
|
+
cfg.projectOwners.has(projectId) ||
|
|
97
|
+
Boolean(cfg.defaultOwner);
|
|
98
|
+
return hasOwner;
|
|
99
|
+
};
|
|
100
|
+
const before = routable(old);
|
|
101
|
+
const after = routable(e.event_data);
|
|
102
|
+
if (before || !after) {
|
|
103
|
+
return {
|
|
104
|
+
becameRoutable: false,
|
|
105
|
+
reason: before
|
|
106
|
+
? "event item:updated is not actionable (task was already routable)"
|
|
107
|
+
: "event item:updated is not actionable (task is still not routable)",
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return { becameRoutable: true, reason: "" };
|
|
111
|
+
}
|
|
65
112
|
/**
|
|
66
113
|
* Something that looked like an address but was not one.
|
|
67
114
|
*
|
|
@@ -198,7 +245,23 @@ heldBy) {
|
|
|
198
245
|
return { act: false, reason: "agent-authored content, ignored to avoid an echo loop" };
|
|
199
246
|
}
|
|
200
247
|
const ACTIONABLE = new Set(["item:added", "item:completed", "reminder:fired", "note:added"]);
|
|
201
|
-
|
|
248
|
+
// The create-then-classify case: a task is filed first and labelled second,
|
|
249
|
+
// so at item:added it is not yet routable and is correctly ignored — and the
|
|
250
|
+
// event that MAKES it routable is an item:updated, which is not actionable.
|
|
251
|
+
// The event that matters is precisely the one nothing subscribes to.
|
|
252
|
+
//
|
|
253
|
+
// Subscribing to item:updated wholesale would be worse than the gap: every
|
|
254
|
+
// edit would dispatch. What is safe is the STATE TRANSITION — unroutable to
|
|
255
|
+
// routable, and only that. Renaming a task, moving it between two allowed
|
|
256
|
+
// projects, or adding any other label all leave routability unchanged and
|
|
257
|
+
// stay ignored.
|
|
258
|
+
if (e.event_name === "item:updated") {
|
|
259
|
+
const t = routabilityTransition(e, cfg);
|
|
260
|
+
if (!t.becameRoutable)
|
|
261
|
+
return { act: false, reason: t.reason };
|
|
262
|
+
// Falls through to normal routing.
|
|
263
|
+
}
|
|
264
|
+
else if (!ACTIONABLE.has(e.event_name)) {
|
|
202
265
|
return { act: false, reason: `event ${e.event_name} is not actionable` };
|
|
203
266
|
}
|
|
204
267
|
// Creating a recurring, addressed task DEFINES a trigger; it does not pull
|
|
@@ -444,8 +507,24 @@ export function createWebhookServer(cfg, deps) {
|
|
|
444
507
|
// restart. A project created and granted while you are using the system
|
|
445
508
|
// has to work immediately, or the grant is indistinguishable from a
|
|
446
509
|
// project that routes nowhere.
|
|
447
|
-
const { applyGrants } = await import("./todoist-ingress.js");
|
|
448
|
-
|
|
510
|
+
const { applyGrants, expandThroughSubtree } = await import("./todoist-ingress.js");
|
|
511
|
+
let live = applyGrants(cfg);
|
|
512
|
+
// A sub-project is a folder, not a second owner. Before this, organising
|
|
513
|
+
// tasks into "Jobs Matthias / Executive Search" moved them outside the
|
|
514
|
+
// allowlist and every one was refused — silently, and precisely when
|
|
515
|
+
// someone tidied up. Only ancestors granted WITH a subtree flag apply, so
|
|
516
|
+
// nothing becomes an ingress that nobody granted.
|
|
517
|
+
const eventProject = String(event.event_data?.project_id ?? "");
|
|
518
|
+
if (eventProject && !live.ingressProjectIds.has(eventProject)) {
|
|
519
|
+
try {
|
|
520
|
+
const { projectTree, ancestorsOf } = await import("./todoist-projects.js");
|
|
521
|
+
const tree = await projectTree();
|
|
522
|
+
live = expandThroughSubtree(live, eventProject, ancestorsOf(eventProject, tree));
|
|
523
|
+
}
|
|
524
|
+
catch (err) {
|
|
525
|
+
log(`todoist-webhook: subtree lookup failed — ${err instanceof Error ? err.message : String(err)}`);
|
|
526
|
+
}
|
|
527
|
+
}
|
|
449
528
|
const decision = route(event, live, await (deps.knownOwners?.() ?? []), isComment ? ownerOf(parentId) : undefined);
|
|
450
529
|
const who = event.initiator?.email ?? event.initiator?.full_name ?? "todoist";
|
|
451
530
|
if (decision.nearMiss) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todoist-webhook.js","sourceRoot":"","sources":["../../src/daemon/todoist-webhook.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"todoist-webhook.js","sourceRoot":"","sources":["../../src/daemon/todoist-webhook.ts"],"names":[],"mappings":"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"}
|