@jungjaehoon/mama-os 0.61.2 → 0.63.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 +106 -0
- package/README.md +1 -1
- package/dist/api/drive-actions.d.ts +12 -0
- package/dist/api/drive-actions.d.ts.map +1 -0
- package/dist/api/drive-actions.js +322 -0
- package/dist/api/drive-actions.js.map +1 -0
- package/dist/api/report-source-actions.d.ts.map +1 -1
- package/dist/api/report-source-actions.js +15 -7
- package/dist/api/report-source-actions.js.map +1 -1
- package/dist/api/security-events.d.ts +26 -0
- package/dist/api/security-events.d.ts.map +1 -1
- package/dist/api/security-events.js +107 -24
- package/dist/api/security-events.js.map +1 -1
- package/dist/api/source-actions.d.ts.map +1 -1
- package/dist/api/source-actions.js +7 -7
- package/dist/api/source-actions.js.map +1 -1
- package/dist/api/stored-source-reader.d.ts.map +1 -1
- package/dist/api/stored-source-reader.js +3 -0
- package/dist/api/stored-source-reader.js.map +1 -1
- package/dist/api/trello-actions.d.ts +15 -0
- package/dist/api/trello-actions.d.ts.map +1 -0
- package/dist/api/trello-actions.js +130 -0
- package/dist/api/trello-actions.js.map +1 -0
- package/dist/api/viewer-data.d.ts +77 -0
- package/dist/api/viewer-data.d.ts.map +1 -1
- package/dist/api/viewer-data.js +116 -0
- package/dist/api/viewer-data.js.map +1 -1
- package/dist/api/viewer-server.d.ts +1 -1
- package/dist/api/viewer-server.d.ts.map +1 -1
- package/dist/api/viewer-server.js +87 -3
- package/dist/api/viewer-server.js.map +1 -1
- package/dist/api/work-actions.d.ts +3 -0
- package/dist/api/work-actions.d.ts.map +1 -1
- package/dist/api/work-actions.js +23 -15
- package/dist/api/work-actions.js.map +1 -1
- package/dist/backfill/format.d.ts +105 -0
- package/dist/backfill/format.d.ts.map +1 -0
- package/dist/backfill/format.js +314 -0
- package/dist/backfill/format.js.map +1 -0
- package/dist/backfill/push.d.ts +63 -0
- package/dist/backfill/push.d.ts.map +1 -0
- package/dist/backfill/push.js +221 -0
- package/dist/backfill/push.js.map +1 -0
- package/dist/cli/commands/backfill.d.ts +12 -0
- package/dist/cli/commands/backfill.d.ts.map +1 -0
- package/dist/cli/commands/backfill.js +67 -0
- package/dist/cli/commands/backfill.js.map +1 -0
- package/dist/cli/commands/daemon.d.ts +2 -1
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/daemon.js +55 -14
- package/dist/cli/commands/daemon.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +4 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/index.js +18 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/runtime/claude-caller-config.d.ts +6 -1
- package/dist/cli/runtime/claude-caller-config.d.ts.map +1 -1
- package/dist/cli/runtime/claude-caller-config.js +3 -1
- package/dist/cli/runtime/claude-caller-config.js.map +1 -1
- package/dist/connectors/framework/gws-utils.d.ts +6 -3
- package/dist/connectors/framework/gws-utils.d.ts.map +1 -1
- package/dist/connectors/framework/gws-utils.js +35 -6
- package/dist/connectors/framework/gws-utils.js.map +1 -1
- package/dist/connectors/index.d.ts +0 -1
- package/dist/connectors/index.d.ts.map +1 -1
- package/dist/connectors/index.js +1 -5
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/slack/index.d.ts +2 -0
- package/dist/connectors/slack/index.d.ts.map +1 -1
- package/dist/connectors/slack/index.js +83 -39
- package/dist/connectors/slack/index.js.map +1 -1
- package/dist/connectors/trello/action-line.d.ts +13 -0
- package/dist/connectors/trello/action-line.d.ts.map +1 -0
- package/dist/connectors/trello/action-line.js +118 -0
- package/dist/connectors/trello/action-line.js.map +1 -0
- package/dist/connectors/trello/actions.d.ts +27 -0
- package/dist/connectors/trello/actions.d.ts.map +1 -0
- package/dist/connectors/trello/actions.js +35 -0
- package/dist/connectors/trello/actions.js.map +1 -0
- package/dist/connectors/trello/api.d.ts +23 -0
- package/dist/connectors/trello/api.d.ts.map +1 -0
- package/dist/connectors/trello/api.js +102 -0
- package/dist/connectors/trello/api.js.map +1 -0
- package/dist/connectors/trello/index.d.ts +63 -31
- package/dist/connectors/trello/index.d.ts.map +1 -1
- package/dist/connectors/trello/index.js +165 -246
- package/dist/connectors/trello/index.js.map +1 -1
- package/dist/gateways/discord.d.ts +4 -0
- package/dist/gateways/discord.d.ts.map +1 -1
- package/dist/gateways/discord.js +7 -3
- package/dist/gateways/discord.js.map +1 -1
- package/dist/gateways/slack.d.ts +4 -0
- package/dist/gateways/slack.d.ts.map +1 -1
- package/dist/gateways/slack.js +7 -3
- package/dist/gateways/slack.js.map +1 -1
- package/dist/gateways/telegram-message-ledger.d.ts +5 -0
- package/dist/gateways/telegram-message-ledger.d.ts.map +1 -1
- package/dist/gateways/telegram-message-ledger.js +8 -1
- package/dist/gateways/telegram-message-ledger.js.map +1 -1
- package/dist/gateways/telegram.d.ts +4 -0
- package/dist/gateways/telegram.d.ts.map +1 -1
- package/dist/gateways/telegram.js +7 -5
- package/dist/gateways/telegram.js.map +1 -1
- package/dist/replay/replay-source-catalog.d.ts.map +1 -1
- package/dist/replay/replay-source-catalog.js +5 -45
- package/dist/replay/replay-source-catalog.js.map +1 -1
- package/dist/replay/trello-import.d.ts +1 -8
- package/dist/replay/trello-import.d.ts.map +1 -1
- package/dist/replay/trello-import.js +16 -103
- package/dist/replay/trello-import.js.map +1 -1
- package/dist/runtime/action-surface.d.ts +4 -1
- package/dist/runtime/action-surface.d.ts.map +1 -1
- package/dist/runtime/action-surface.js +30 -1
- package/dist/runtime/action-surface.js.map +1 -1
- package/dist/runtime/config.d.ts +5 -0
- package/dist/runtime/config.d.ts.map +1 -1
- package/dist/runtime/config.js +10 -1
- package/dist/runtime/config.js.map +1 -1
- package/dist/runtime/connectors.d.ts +0 -1
- package/dist/runtime/connectors.d.ts.map +1 -1
- package/dist/runtime/connectors.js +0 -1
- package/dist/runtime/connectors.js.map +1 -1
- package/dist/runtime/egress-proxy.d.ts +15 -0
- package/dist/runtime/egress-proxy.d.ts.map +1 -0
- package/dist/runtime/egress-proxy.js +176 -0
- package/dist/runtime/egress-proxy.js.map +1 -0
- package/dist/runtime/native-session.d.ts +7 -0
- package/dist/runtime/native-session.d.ts.map +1 -1
- package/dist/runtime/native-session.js +8 -1
- package/dist/runtime/native-session.js.map +1 -1
- package/dist/runtime/outbound-attempts.d.ts +18 -0
- package/dist/runtime/outbound-attempts.d.ts.map +1 -0
- package/dist/runtime/outbound-attempts.js +98 -0
- package/dist/runtime/outbound-attempts.js.map +1 -0
- package/dist/runtime/owner-runtime.d.ts +9 -0
- package/dist/runtime/owner-runtime.d.ts.map +1 -1
- package/dist/runtime/owner-runtime.js +8 -0
- package/dist/runtime/owner-runtime.js.map +1 -1
- package/dist/runtime/owner-system-prompt.d.ts.map +1 -1
- package/dist/runtime/owner-system-prompt.js +6 -1
- package/dist/runtime/owner-system-prompt.js.map +1 -1
- package/dist/runtime/record-orders.d.ts.map +1 -1
- package/dist/runtime/record-orders.js +33 -13
- package/dist/runtime/record-orders.js.map +1 -1
- package/dist/runtime/stimulus-delivery.d.ts +15 -0
- package/dist/runtime/stimulus-delivery.d.ts.map +1 -1
- package/dist/runtime/stimulus-delivery.js +29 -2
- package/dist/runtime/stimulus-delivery.js.map +1 -1
- package/dist/runtime/turn-orders.d.ts.map +1 -1
- package/dist/runtime/turn-orders.js +6 -2
- package/dist/runtime/turn-orders.js.map +1 -1
- package/package.json +2 -2
- package/public/viewer/js/modules/graph.js +169 -957
- package/public/viewer/js/modules/memory-timeline.js +215 -0
- package/public/viewer/js/utils/api.js +7 -26
- package/public/viewer/log-viewer.html +7 -3
- package/public/viewer/operator/operator.css +1 -1
- package/public/viewer/operator/operator.js +5428 -5685
- package/public/viewer/src/modules/graph.ts +185 -1132
- package/public/viewer/src/modules/memory-timeline.ts +272 -0
- package/public/viewer/src/types/global.d.ts +1 -1
- package/public/viewer/src/utils/api.ts +43 -47
- package/public/viewer/viewer.css +257 -7
- package/public/viewer/viewer.html +68 -292
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/connectors/trello/api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AA2BD,qBAAa,SAAS;IAElB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,WAAW,EAAE,iBAAiB,EAC9B,SAAS,GAAE,OAAO,KAA2C;IAG1E,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAgB3E,kGAAkG;IAC5F,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3C,OAAO,CAAC,YAAY,EAAE,CAAC;IA8C1B,wEAAwE;IAClE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAajE"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TrelloApi = void 0;
|
|
4
|
+
const BASE_URL = 'https://api.trello.com/1';
|
|
5
|
+
const ACTION_PAGE_SIZE = 1_000;
|
|
6
|
+
const REQUEST_TIMEOUT_MS = 30_000;
|
|
7
|
+
function actionTime(action) {
|
|
8
|
+
const value = Date.parse(action.date);
|
|
9
|
+
if (!Number.isSafeInteger(value) || value < 0)
|
|
10
|
+
throw new Error('Trello action date is invalid');
|
|
11
|
+
return value;
|
|
12
|
+
}
|
|
13
|
+
function assertAction(value) {
|
|
14
|
+
const action = value;
|
|
15
|
+
if (!action ||
|
|
16
|
+
typeof action.id !== 'string' ||
|
|
17
|
+
action.id.trim() === '' ||
|
|
18
|
+
typeof action.type !== 'string' ||
|
|
19
|
+
!action.data ||
|
|
20
|
+
typeof action.data !== 'object') {
|
|
21
|
+
throw new Error('Trello action identity is invalid');
|
|
22
|
+
}
|
|
23
|
+
actionTime(action);
|
|
24
|
+
}
|
|
25
|
+
class TrelloApi {
|
|
26
|
+
credentials;
|
|
27
|
+
fetchImpl;
|
|
28
|
+
constructor(credentials, fetchImpl = (input, init) => fetch(input, init)) {
|
|
29
|
+
this.credentials = credentials;
|
|
30
|
+
this.fetchImpl = fetchImpl;
|
|
31
|
+
}
|
|
32
|
+
async get(path, params = {}) {
|
|
33
|
+
const url = new URL(`${BASE_URL}${path}`);
|
|
34
|
+
for (const [key, value] of Object.entries(params))
|
|
35
|
+
url.searchParams.set(key, value);
|
|
36
|
+
url.searchParams.set('key', this.credentials.apiKey);
|
|
37
|
+
url.searchParams.set('token', this.credentials.token);
|
|
38
|
+
const controller = new AbortController();
|
|
39
|
+
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
|
|
40
|
+
try {
|
|
41
|
+
const response = await this.fetchImpl(url, { signal: controller.signal });
|
|
42
|
+
if (!response.ok)
|
|
43
|
+
throw new Error(`Trello ${path} failed with HTTP ${response.status}`);
|
|
44
|
+
return (await response.json());
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
clearTimeout(timeout);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/** A board's actions with fromMs <= date < untilMs (open-ended without untilMs), oldest first. */
|
|
51
|
+
async boardActions(boardId, window) {
|
|
52
|
+
const path = `/boards/${encodeURIComponent(boardId)}/actions`;
|
|
53
|
+
const kept = new Map();
|
|
54
|
+
let before = window.untilMs === undefined ? undefined : new Date(window.untilMs).toISOString();
|
|
55
|
+
for (;;) {
|
|
56
|
+
const page = await this.get(path, {
|
|
57
|
+
filter: 'all',
|
|
58
|
+
since: new Date(window.fromMs).toISOString(),
|
|
59
|
+
...(before === undefined ? {} : { before }),
|
|
60
|
+
limit: String(ACTION_PAGE_SIZE),
|
|
61
|
+
fields: 'id,type,date,data,idMemberCreator',
|
|
62
|
+
memberCreator: 'true',
|
|
63
|
+
memberCreator_fields: 'id,fullName,username',
|
|
64
|
+
});
|
|
65
|
+
if (!Array.isArray(page))
|
|
66
|
+
throw new Error('Trello actions response must be an array');
|
|
67
|
+
let oldest;
|
|
68
|
+
for (const value of page) {
|
|
69
|
+
assertAction(value);
|
|
70
|
+
const at = actionTime(value);
|
|
71
|
+
if (oldest === undefined ||
|
|
72
|
+
at < actionTime(oldest) ||
|
|
73
|
+
(at === actionTime(oldest) && value.id < oldest.id)) {
|
|
74
|
+
oldest = value;
|
|
75
|
+
}
|
|
76
|
+
if (at < window.fromMs || (window.untilMs !== undefined && at >= window.untilMs))
|
|
77
|
+
continue;
|
|
78
|
+
kept.set(value.id, value);
|
|
79
|
+
}
|
|
80
|
+
if (page.length < ACTION_PAGE_SIZE ||
|
|
81
|
+
oldest === undefined ||
|
|
82
|
+
// A full page whose oldest action sits exactly at the start can have same-millisecond
|
|
83
|
+
// actions on the next page; only an older one proves the window is read.
|
|
84
|
+
actionTime(oldest) < window.fromMs) {
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
if (oldest.id === before)
|
|
88
|
+
throw new Error('Trello action pagination made no progress');
|
|
89
|
+
before = oldest.id;
|
|
90
|
+
}
|
|
91
|
+
return [...kept.values()].sort((a, b) => actionTime(a) - actionTime(b) || a.id.localeCompare(b.id));
|
|
92
|
+
}
|
|
93
|
+
/** The board's labels by id, for naming label changes in live reads. */
|
|
94
|
+
async boardLabels(boardId) {
|
|
95
|
+
const labels = await this.get(`/boards/${encodeURIComponent(boardId)}/labels`, { fields: 'name', limit: '1000' });
|
|
96
|
+
return new Map(labels.flatMap((label) => typeof label.id === 'string' && typeof label.name === 'string' && label.name.trim() !== ''
|
|
97
|
+
? [[label.id, label.name]]
|
|
98
|
+
: []));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.TrelloApi = TrelloApi;
|
|
102
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/connectors/trello/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,48 +1,80 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* TrelloConnector —
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* A card's operational state is more than its list: production boards track the
|
|
7
|
-
* assignee and the revision round (e.g. a "初稿" / "1回修正" label) on the card
|
|
8
|
-
* itself. The poller therefore ingests labels and resolved member names, and a
|
|
9
|
-
* label/member change on an unmoved card is a change worth emitting - owner
|
|
10
|
-
* question "who owns this and which revision round is it in" must be answerable
|
|
11
|
-
* from the raw store.
|
|
2
|
+
* TrelloConnector — stores every action of the configured boards. Each poll reads
|
|
3
|
+
* /boards/{id}/actions since the scheduler's cursor and returns the same item the history import
|
|
4
|
+
* stores (connectors/trello/actions.ts); the windows overlap and the raw store keeps an action
|
|
5
|
+
* once. The connector also serves trello.read, so the credentials stay here.
|
|
12
6
|
*/
|
|
13
7
|
import type { AuthRequirement, ConnectorConfig, ConnectorHealth, IConnector, NormalizedItem } from '../framework/types.js';
|
|
8
|
+
import { TrelloApi } from './api.js';
|
|
9
|
+
import { type TrelloBoardChannel } from './actions.js';
|
|
10
|
+
export interface TrelloBoardView {
|
|
11
|
+
board: string;
|
|
12
|
+
name: string | null;
|
|
13
|
+
lists: Array<{
|
|
14
|
+
id: string;
|
|
15
|
+
name: string;
|
|
16
|
+
openCards: number;
|
|
17
|
+
}>;
|
|
18
|
+
}
|
|
19
|
+
export interface TrelloCardView {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
board: string;
|
|
23
|
+
list: string | null;
|
|
24
|
+
labels: string[];
|
|
25
|
+
members: string[];
|
|
26
|
+
due: string | null;
|
|
27
|
+
dueComplete: boolean;
|
|
28
|
+
lastActivity: string;
|
|
29
|
+
url: string | null;
|
|
30
|
+
}
|
|
31
|
+
export interface TrelloCardDetail extends TrelloCardView {
|
|
32
|
+
description: string;
|
|
33
|
+
closed: boolean;
|
|
34
|
+
checklists: Array<{
|
|
35
|
+
name: string;
|
|
36
|
+
items: Array<{
|
|
37
|
+
name: string;
|
|
38
|
+
state: string;
|
|
39
|
+
}>;
|
|
40
|
+
}>;
|
|
41
|
+
actions: Array<{
|
|
42
|
+
id: string;
|
|
43
|
+
time: string;
|
|
44
|
+
line: string;
|
|
45
|
+
}>;
|
|
46
|
+
}
|
|
14
47
|
export declare class TrelloConnector implements IConnector {
|
|
48
|
+
private readonly config;
|
|
49
|
+
private readonly fetchImpl;
|
|
15
50
|
readonly name = "trello";
|
|
16
51
|
readonly type: "api";
|
|
17
|
-
private
|
|
18
|
-
private apiKey;
|
|
19
|
-
private token;
|
|
20
|
-
private readonly baseUrl;
|
|
52
|
+
private client;
|
|
21
53
|
private lastPollTime;
|
|
22
54
|
private lastPollCount;
|
|
23
55
|
private lastError;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
private readonly stateFilePath;
|
|
29
|
-
constructor(config: ConnectorConfig, options: {
|
|
30
|
-
stateFilePath: string;
|
|
31
|
-
} | string);
|
|
32
|
-
private loadState;
|
|
33
|
-
private saveState;
|
|
56
|
+
constructor(config: ConnectorConfig, fetchImpl?: typeof fetch);
|
|
57
|
+
/** The configured boards; an ignored channel or one without a board is left out. */
|
|
58
|
+
boards(): TrelloBoardChannel[];
|
|
59
|
+
api(): TrelloApi;
|
|
34
60
|
init(): Promise<void>;
|
|
35
61
|
dispose(): Promise<void>;
|
|
36
62
|
healthCheck(): Promise<ConnectorHealth>;
|
|
37
63
|
getAuthRequirements(): AuthRequirement[];
|
|
38
64
|
authenticate(): Promise<boolean>;
|
|
39
|
-
|
|
40
|
-
/** id → display name for a board's members. Failure degrades to raw ids
|
|
41
|
-
* (name resolution is enrichment, never a reason to drop a poll). */
|
|
42
|
-
private fetchMemberNames;
|
|
65
|
+
/** One failing board fails the poll, so the scheduler keeps its cursor and retries the window. */
|
|
43
66
|
poll(since: Date): Promise<NormalizedItem[]>;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
67
|
+
private boardKey;
|
|
68
|
+
private cardView;
|
|
69
|
+
/** Each board's open lists with their open card counts. */
|
|
70
|
+
readBoards(boards: TrelloBoardChannel[]): Promise<TrelloBoardView[]>;
|
|
71
|
+
/** The open cards of a board, or of one of its lists, with list, label and member names. */
|
|
72
|
+
readCards(board: TrelloBoardChannel, listId?: string): Promise<TrelloCardView[]>;
|
|
73
|
+
/** One card with its description, checklists and latest actions; label changes are named. */
|
|
74
|
+
readCard(cardId: string): Promise<TrelloCardDetail & {
|
|
75
|
+
boardId: string;
|
|
76
|
+
}>;
|
|
77
|
+
/** Cards matching a query on the given boards (Trello search, at most 20 terms). */
|
|
78
|
+
searchCards(query: string, boards: TrelloBoardChannel[], limit: number): Promise<TrelloCardView[]>;
|
|
47
79
|
}
|
|
48
80
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connectors/trello/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connectors/trello/index.ts"],"names":[],"mappings":"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"}
|