@tienne/gestalt 0.114.0 → 0.116.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/README.ko.md +1 -0
- package/README.md +1 -0
- package/dist/package.json +1 -1
- package/dist/plugin/role-agents/lens-reader/AGENT.md +22 -1
- package/dist/plugin/skills/_shared/proactive-routing.md +1 -1
- package/dist/plugin/skills/lens/SKILL.md +114 -8
- package/dist/plugin/skills/share/SKILL.md +141 -0
- package/dist/plugin/skills/share/agents/openai.yaml +5 -0
- package/dist/plugin/skills/video-digest/SKILL.md +4 -2
- package/dist/plugin/skills/video-digest/templates/comments.md +1 -0
- package/dist/src/cli/commands/digest.d.ts +1 -0
- package/dist/src/cli/commands/digest.d.ts.map +1 -1
- package/dist/src/cli/commands/digest.js +15 -4
- package/dist/src/cli/commands/digest.js.map +1 -1
- package/dist/src/cli/commands/peer.d.ts +5 -1
- package/dist/src/cli/commands/peer.d.ts.map +1 -1
- package/dist/src/cli/commands/peer.js +74 -13
- package/dist/src/cli/commands/peer.js.map +1 -1
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +7 -1
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/digest/render-blocks.d.ts +5 -0
- package/dist/src/digest/render-blocks.d.ts.map +1 -1
- package/dist/src/digest/render-blocks.js +2 -2
- package/dist/src/digest/render-blocks.js.map +1 -1
- package/dist/src/digest/render-html.d.ts +2 -2
- package/dist/src/digest/render-html.d.ts.map +1 -1
- package/dist/src/digest/render-html.js +20 -3
- package/dist/src/digest/render-html.js.map +1 -1
- package/dist/src/digest/render-md.d.ts.map +1 -1
- package/dist/src/digest/render-md.js +9 -2
- package/dist/src/digest/render-md.js.map +1 -1
- package/dist/src/digest/server.d.ts +46 -1
- package/dist/src/digest/server.d.ts.map +1 -1
- package/dist/src/digest/server.js +213 -10
- package/dist/src/digest/server.js.map +1 -1
- package/dist/src/digest/session-request.d.ts +78 -0
- package/dist/src/digest/session-request.d.ts.map +1 -0
- package/dist/src/digest/session-request.js +105 -0
- package/dist/src/digest/session-request.js.map +1 -0
- package/dist/src/digest/svg.d.ts +5 -0
- package/dist/src/digest/svg.d.ts.map +1 -1
- package/dist/src/digest/svg.js +19 -9
- package/dist/src/digest/svg.js.map +1 -1
- package/dist/src/digest/templates.d.ts +9 -0
- package/dist/src/digest/templates.d.ts.map +1 -1
- package/dist/src/digest/templates.js +12 -0
- package/dist/src/digest/templates.js.map +1 -1
- package/dist/src/digest/viewer-js.d.ts.map +1 -1
- package/dist/src/digest/viewer-js.js +534 -46
- package/dist/src/digest/viewer-js.js.map +1 -1
- package/dist/src/digest/viewer-logic.d.ts +26 -5
- package/dist/src/digest/viewer-logic.d.ts.map +1 -1
- package/dist/src/digest/viewer-logic.js +44 -7
- package/dist/src/digest/viewer-logic.js.map +1 -1
- package/dist/src/mcp/schemas.d.ts +13 -7
- package/dist/src/mcp/schemas.d.ts.map +1 -1
- package/dist/src/mcp/schemas.js +11 -6
- package/dist/src/mcp/schemas.js.map +1 -1
- package/dist/src/mcp/server.js +1 -1
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/peer.d.ts +9 -1
- package/dist/src/mcp/tools/peer.d.ts.map +1 -1
- package/dist/src/mcp/tools/peer.js +133 -17
- package/dist/src/mcp/tools/peer.js.map +1 -1
- package/dist/src/peer/daemon.d.ts +1 -1
- package/dist/src/peer/daemon.d.ts.map +1 -1
- package/dist/src/peer/daemon.js +30 -6
- package/dist/src/peer/daemon.js.map +1 -1
- package/dist/src/peer/locate.d.ts +30 -0
- package/dist/src/peer/locate.d.ts.map +1 -1
- package/dist/src/peer/locate.js +75 -0
- package/dist/src/peer/locate.js.map +1 -1
- package/dist/src/peer/message.d.ts +7 -0
- package/dist/src/peer/message.d.ts.map +1 -1
- package/dist/src/peer/message.js +10 -0
- package/dist/src/peer/message.js.map +1 -1
- package/dist/src/peer/network.d.ts +19 -0
- package/dist/src/peer/network.d.ts.map +1 -1
- package/dist/src/peer/network.js +34 -3
- package/dist/src/peer/network.js.map +1 -1
- package/dist/src/peer/peeks.d.ts +6 -0
- package/dist/src/peer/peeks.d.ts.map +1 -1
- package/dist/src/peer/peeks.js +17 -10
- package/dist/src/peer/peeks.js.map +1 -1
- package/dist/src/peer/protocol.d.ts +38 -2
- package/dist/src/peer/protocol.d.ts.map +1 -1
- package/dist/src/peer/protocol.js.map +1 -1
- package/package.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.mcp.json +1 -1
- package/plugin/mcp.json +1 -1
- package/plugin/role-agents/lens-reader/AGENT.md +22 -1
- package/plugin/skills/_shared/proactive-routing.md +1 -1
- package/plugin/skills/lens/SKILL.md +114 -8
- package/plugin/skills/share/SKILL.md +141 -0
- package/plugin/skills/share/agents/openai.yaml +5 -0
- package/plugin/skills/video-digest/SKILL.md +4 -2
- package/plugin/skills/video-digest/templates/comments.md +1 -0
package/dist/src/peer/locate.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
1
2
|
import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
|
|
2
3
|
import { homedir } from 'node:os';
|
|
3
4
|
import { isAbsolute, join } from 'node:path';
|
|
@@ -47,6 +48,80 @@ export function findSessionByPid(pid, configDir = claudeConfigDir()) {
|
|
|
47
48
|
return null;
|
|
48
49
|
return readSessionFile(join(configDir, 'sessions', `${pid}.json`));
|
|
49
50
|
}
|
|
51
|
+
/** pid의 부모 pid. 못 읽었거나 init(1)이면 undefined */
|
|
52
|
+
export function parentPid(pid) {
|
|
53
|
+
try {
|
|
54
|
+
const out = execFileSync('ps', ['-o', 'ppid=', '-p', String(pid)], {
|
|
55
|
+
encoding: 'utf8',
|
|
56
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
57
|
+
timeout: 500,
|
|
58
|
+
});
|
|
59
|
+
const n = Number(out.trim());
|
|
60
|
+
return Number.isInteger(n) && n > 1 ? n : undefined;
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* startPid부터 부모를 따라 올라가며 `sessions/<pid>.json`이 있는 첫 세션을 찾는다. Bash 도구로 띄운
|
|
68
|
+
* `gestalt digest serve`처럼 세션과 사이에 셸이 몇 겹 낀 프로세스가 쓴다. Claude Code가 자식에게 주는
|
|
69
|
+
* `CLAUDE_PID`가 있으면 그걸 먼저 본다. pid 1에 닿거나 같은 pid를 다시 만나면 멈춘다.
|
|
70
|
+
*/
|
|
71
|
+
export function findSessionInAncestors(startPid, configDir = claudeConfigDir(), opts = {}) {
|
|
72
|
+
const env = opts.env ?? process.env;
|
|
73
|
+
const parentOf = opts.parentOf ?? parentPid;
|
|
74
|
+
const fromEnv = Number(env['CLAUDE_PID']);
|
|
75
|
+
if (Number.isInteger(fromEnv) && fromEnv > 1) {
|
|
76
|
+
const hit = findSessionByPid(fromEnv, configDir);
|
|
77
|
+
if (hit)
|
|
78
|
+
return hit;
|
|
79
|
+
}
|
|
80
|
+
const seen = new Set();
|
|
81
|
+
let pid = startPid;
|
|
82
|
+
for (let depth = 0; depth <= (opts.maxDepth ?? 8); depth++) {
|
|
83
|
+
if (pid === undefined || !Number.isInteger(pid) || pid <= 1 || seen.has(pid))
|
|
84
|
+
return null;
|
|
85
|
+
seen.add(pid);
|
|
86
|
+
const hit = findSessionByPid(pid, configDir);
|
|
87
|
+
if (hit)
|
|
88
|
+
return hit;
|
|
89
|
+
pid = parentOf(pid);
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 명령을 친 Claude Code 세션의 id. Bash 도구가 띄운 셸은 `CLAUDE_PID`와 `CLAUDE_CODE_SESSION_ID`를 물려받는다.
|
|
95
|
+
* `/clear`나 다시 이어 받기로 세션 id가 바뀌면 `sessions/<pid>.json`이 따라 바뀌므로 그쪽을 먼저 본다.
|
|
96
|
+
* 세션이 비정상 종료해 남은 파일을 다른 프로세스가 같은 pid로 물려받았을 수 있어서 파일의 pid가
|
|
97
|
+
* `CLAUDE_PID`와 같고 그 프로세스가 살아 있을 때만 믿는다. 아니면 `CLAUDE_CODE_SESSION_ID`로 간다.
|
|
98
|
+
* `ges_peer ask_user`의 MCP 서버는 부모와 조부모 pid까지 훑고 환경 변수로는 안 돌아간다. MCP 서버는
|
|
99
|
+
* 세션의 자식이라 pid를 따라가면 되고 Bash 셸은 사이에 낀 프로세스가 정해져 있지 않아서다.
|
|
100
|
+
*/
|
|
101
|
+
export function findCurrentSession(env = process.env, configDir = claudeConfigDir(env), alive = isAlive) {
|
|
102
|
+
const pid = Number(env['CLAUDE_PID']);
|
|
103
|
+
const rec = findSessionByPid(pid, configDir);
|
|
104
|
+
if (rec && rec.pid === pid && alive(pid) && isSessionId(rec.sessionId)) {
|
|
105
|
+
return { ok: true, sessionId: rec.sessionId };
|
|
106
|
+
}
|
|
107
|
+
const fromEnv = env['CLAUDE_CODE_SESSION_ID'];
|
|
108
|
+
if (fromEnv && isSessionId(fromEnv))
|
|
109
|
+
return { ok: true, sessionId: fromEnv };
|
|
110
|
+
return {
|
|
111
|
+
ok: false,
|
|
112
|
+
reason: 'Claude Code 세션 안에서 친 명령이 아니에요. 세션 밖에서는 --session <sessionId>로 고르세요',
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/** 그 pid의 프로세스가 있는지. 권한이 없어 신호를 못 보내도(EPERM) 프로세스는 있는 것이다 */
|
|
116
|
+
function isAlive(pid) {
|
|
117
|
+
try {
|
|
118
|
+
process.kill(pid, 0);
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
return err.code === 'EPERM';
|
|
123
|
+
}
|
|
124
|
+
}
|
|
50
125
|
export function findSessionById(sessionId, configDir) {
|
|
51
126
|
const dir = join(configDir, 'sessions');
|
|
52
127
|
let names;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locate.js","sourceRoot":"","sources":["../../../src/peer/locate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"locate.js","sourceRoot":"","sources":["../../../src/peer/locate.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,11 @@ export declare const MESSAGE_RATE_WINDOW_MS: number;
|
|
|
36
36
|
* 릴레이가 보낸 사람마다 들고 있는 양도 이 숫자로 막는다.
|
|
37
37
|
*/
|
|
38
38
|
export declare const MESSAGE_RECEIVE_LIMIT: number;
|
|
39
|
+
/**
|
|
40
|
+
* 보는 쪽 에이전트(`ges_peer send`)가 공유 하나에 10분 동안 보내는 메시지 상한. 사람 몫 상한
|
|
41
|
+
* (MESSAGE_RATE_LIMIT) 안에서 따로 센다. 묻고 다음 peek으로 답을 보는 흐름이라 몇 건이면 된다
|
|
42
|
+
*/
|
|
43
|
+
export declare const AGENT_MESSAGE_RATE_LIMIT = 4;
|
|
39
44
|
/**
|
|
40
45
|
* 원격에서 온 짧은 글자(거절 이유, 공유 id)를 한 줄 라벨로 찍기 전에 정리한다. 줄바꿈과 CR,
|
|
41
46
|
* 탭도 공백 하나로 합친다. 남겨 두면 CLI 목록에 가짜 줄을 끼우거나 앞의 상태 문구를 덮는다.
|
|
@@ -108,6 +113,8 @@ export declare class RateLimiter {
|
|
|
108
113
|
private hits;
|
|
109
114
|
private lastSweep;
|
|
110
115
|
constructor(limit?: number, windowMs?: number);
|
|
116
|
+
/** 차감하지 않고 지금 한 건을 더 받을 몫이 있는지 본다. 한도 둘을 다 확인한 뒤에 차감할 때 쓴다 */
|
|
117
|
+
has(key: string, now?: number): boolean;
|
|
111
118
|
take(key: string, now?: number): boolean;
|
|
112
119
|
}
|
|
113
120
|
//# sourceMappingURL=message.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/peer/message.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/peer/message.ts"],"names":[],"mappings":"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"}
|
package/dist/src/peer/message.js
CHANGED
|
@@ -13,6 +13,11 @@ export const MESSAGE_RATE_WINDOW_MS = 10 * 60 * 1000;
|
|
|
13
13
|
* 릴레이가 보낸 사람마다 들고 있는 양도 이 숫자로 막는다.
|
|
14
14
|
*/
|
|
15
15
|
export const MESSAGE_RECEIVE_LIMIT = MESSAGE_RATE_LIMIT * 3;
|
|
16
|
+
/**
|
|
17
|
+
* 보는 쪽 에이전트(`ges_peer send`)가 공유 하나에 10분 동안 보내는 메시지 상한. 사람 몫 상한
|
|
18
|
+
* (MESSAGE_RATE_LIMIT) 안에서 따로 센다. 묻고 다음 peek으로 답을 보는 흐름이라 몇 건이면 된다
|
|
19
|
+
*/
|
|
20
|
+
export const AGENT_MESSAGE_RATE_LIMIT = 4;
|
|
16
21
|
/**
|
|
17
22
|
* 원격에서 온 짧은 글자(거절 이유, 공유 id)를 한 줄 라벨로 찍기 전에 정리한다. 줄바꿈과 CR,
|
|
18
23
|
* 탭도 공백 하나로 합친다. 남겨 두면 CLI 목록에 가짜 줄을 끼우거나 앞의 상태 문구를 덮는다.
|
|
@@ -161,6 +166,11 @@ export class RateLimiter {
|
|
|
161
166
|
this.limit = limit;
|
|
162
167
|
this.windowMs = windowMs;
|
|
163
168
|
}
|
|
169
|
+
/** 차감하지 않고 지금 한 건을 더 받을 몫이 있는지 본다. 한도 둘을 다 확인한 뒤에 차감할 때 쓴다 */
|
|
170
|
+
has(key, now = Date.now()) {
|
|
171
|
+
const recent = (this.hits.get(key) ?? []).filter((at) => now - at < this.windowMs);
|
|
172
|
+
return recent.length < this.limit;
|
|
173
|
+
}
|
|
164
174
|
take(key, now = Date.now()) {
|
|
165
175
|
// 다시 안 불리는 키가 데몬이 도는 동안 남지 않게 창 하나에 한 번씩 지난 키를 지운다
|
|
166
176
|
if (now - this.lastSweep >= this.windowMs) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/peer/message.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/peer/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAsC5C,yBAAyB;AACzB,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC3C,oCAAoC;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,CAAC;AAC3C,wCAAwC;AACxC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACrD;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,GAAG,CAAC,CAAC;AAE5D;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,GAAY,EAAE,GAAG,GAAG,GAAG;IAChD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,IAAI,GAAG,GAAG;SACb,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC;SAC1B,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;SACb,IAAI,EAAE,CAAC;IACV,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,MAAqB,EAAE,EAAU;IACzE,OAAO,uBAAuB,QAAQ,CAAC,IAAI,CAAC,aAAa,MAAM,SAAS,EAAE,IAAI,CAAC;AACjF,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,QAAQ,CAAC,GAAY;IACnC,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,GAAG,uBAAuB,CAAC;AAE3C,MAAM,UAAU,YAAY;IAC1B,OAAO,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAE5C,MAAM,UAAU,aAAa;IAC3B,OAAO,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC7C,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACrE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACjF,CAAC;AAED;;;GAGG;AACH,MAAM,SAAS,GAAG,wBAAwB,CAAC;AAC3C,uEAAuE;AACvE,0EAA0E;AAC1E,MAAM,OAAO,GAAG,wDAAwD,CAAC;AACzE;;;;GAIG;AACH,MAAM,GAAG,GAAG,yBAAyB,CAAC;AAItC;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAY,EAAE,QAAQ,GAAG,iBAAiB;IAC5E,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACzE,MAAM,IAAI,GAAG,GAAG;SACb,SAAS,CAAC,MAAM,CAAC;SACjB,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;SACvB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC;SACpB,IAAI,EAAE,CAAC;IACV,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAC1D,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC;QACvC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAUD,sDAAsD;AACtD,MAAM,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAc;IACjE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,4CAA4C;IAC5C,MAAM,GAAG,GACP,MAAM,KAAK,OAAO;QAChB,CAAC,CAAC,MAAM,IAAI,cAAc;QAC1B,CAAC,CAAC,MAAM,IAAI,oBAAoB,CAAC;IACrC,OAAO;QACL,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;QAC7B,IAAI;QACJ,iBAAiB;QACjB,GAAG,GAAG,mBAAmB;QACzB,8EAA8E;KAC/E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,QAAgB;IACzD,OAAO,sBAAsB,QAAQ,CAAC,IAAI,CAAC,eAAe,QAAQ,aAAa,CAAC;AAClF,CAAC;AASD,gCAAgC;AAChC,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAoB;IACpE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO;QACL,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC5B,IAAI;QACJ,gBAAgB;QAChB,MAAM,IAAI,UAAU,QAAQ,iBAAiB,IAAI,wCAAwC;QACzF,8EAA8E;KAC/E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,qCAAqC;AACrC,MAAM,OAAO,WAAW;IAKH;IACA;IALX,IAAI,GAAG,IAAI,GAAG,EAAoB,CAAC;IACnC,SAAS,GAAG,CAAC,CAAC;IAEtB,YACmB,QAAQ,kBAAkB,EAC1B,WAAW,sBAAsB;QADjC,UAAK,GAAL,KAAK,CAAqB;QAC1B,aAAQ,GAAR,QAAQ,CAAyB;IACjD,CAAC;IAEJ,8DAA8D;IAC9D,GAAG,CAAC,GAAW,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAC/B,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnF,OAAO,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,IAAI,CAAC,GAAW,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAChC,mDAAmD;QACnD,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAChC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAE,IAAI,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACxF,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACvB,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnF,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -151,6 +151,11 @@ export declare class PeerNetwork {
|
|
|
151
151
|
*/
|
|
152
152
|
private refusedMessages;
|
|
153
153
|
private sendLimiter;
|
|
154
|
+
/**
|
|
155
|
+
* 보는 쪽 에이전트가 보내는 메시지의 상한. 사람 몫(sendLimiter)과 따로 더 좁게 둔다. 에이전트가 루프를
|
|
156
|
+
* 돌며 주인 세션을 두드려도 사람이 보낼 몫까지 다 쓰지 못한다. 에이전트 메시지는 두 상한을 다 탄다
|
|
157
|
+
*/
|
|
158
|
+
private agentLimiter;
|
|
154
159
|
/** 보는 쪽이 12건으로 먼저 막는다. 주인 쪽은 릴레이에 쌓였다 한꺼번에 온 것도 받게 넉넉하다 */
|
|
155
160
|
private receiveLimiter;
|
|
156
161
|
private readonly maxBuffered;
|
|
@@ -235,6 +240,8 @@ export declare class PeerNetwork {
|
|
|
235
240
|
owner: string;
|
|
236
241
|
status: string;
|
|
237
242
|
events: number;
|
|
243
|
+
messages?: boolean;
|
|
244
|
+
agentPeek?: boolean;
|
|
238
245
|
closed?: string;
|
|
239
246
|
}[];
|
|
240
247
|
/** 링크로 원격 공유를 보기 시작한다. 주인 데몬이 받아 줄 때까지 기다린다 */
|
|
@@ -260,6 +267,18 @@ export declare class PeerNetwork {
|
|
|
260
267
|
id: string;
|
|
261
268
|
status: MessageStatus;
|
|
262
269
|
}>;
|
|
270
|
+
/**
|
|
271
|
+
* 보는 쪽 에이전트(ges_peer send): 보고 있는 원격 공유의 주인 세션에 `origin="agent"` 메시지를 넣는다.
|
|
272
|
+
* target은 주인 쪽 공유 id이고 보기 id도 받는다. 나머지는 사람 메시지와 같은 길이다. 주인 모델의
|
|
273
|
+
* 답은 따로 안 돌아오고 주인 세션 대화 기록에 남아서 다음 peek의 replies로 본다.
|
|
274
|
+
*/
|
|
275
|
+
sendAgentMessage(target: string, raw: string): Promise<{
|
|
276
|
+
id: string;
|
|
277
|
+
status: MessageStatus;
|
|
278
|
+
share: string;
|
|
279
|
+
owner: string;
|
|
280
|
+
agentPeek?: boolean;
|
|
281
|
+
}>;
|
|
263
282
|
listMessages(watchId: string): {
|
|
264
283
|
id: string;
|
|
265
284
|
status: MessageStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../src/peer/network.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA2BzC,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,YAAY,CAAC;AAExD,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAc,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../src/peer/network.ts"],"names":[],"mappings":"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"}
|
package/dist/src/peer/network.js
CHANGED
|
@@ -6,10 +6,10 @@ import { aeadOpen, aeadSeal, canonical, deriveKey, hmac, openBox, safeEqual, sea
|
|
|
6
6
|
import { RelayTransport } from './transport.js';
|
|
7
7
|
import { MAX_VIEWERS_PER_SHARE, REPLAY_CHUNK_BYTES } from './viewer.js';
|
|
8
8
|
import { errMessage, PeerNetworkError } from './errors.js';
|
|
9
|
-
import { isMessageId, MESSAGE_RECEIVE_LIMIT, newMessageId, plainLabel, RateLimiter, sanitizeMessageBody, } from './message.js';
|
|
9
|
+
import { AGENT_MESSAGE_RATE_LIMIT, isMessageId, MESSAGE_RECEIVE_LIMIT, newMessageId, plainLabel, RateLimiter, sanitizeMessageBody, } from './message.js';
|
|
10
10
|
import { RelaySendError } from './transport.js';
|
|
11
11
|
import { DEFAULT_FIRST_WATCH_APPROVAL } from './protocol.js';
|
|
12
|
-
import { PeekDesk } from './peeks.js';
|
|
12
|
+
import { PeekDesk, pickWatch } from './peeks.js';
|
|
13
13
|
import { QuestionDesk } from './questions.js';
|
|
14
14
|
/** 초대 유효 시간. 설계 원문의 24시간 */
|
|
15
15
|
export const INVITE_TTL_MS = 24 * 60 * 60 * 1000;
|
|
@@ -94,6 +94,11 @@ export class PeerNetwork {
|
|
|
94
94
|
*/
|
|
95
95
|
refusedMessages = new Map();
|
|
96
96
|
sendLimiter = new RateLimiter();
|
|
97
|
+
/**
|
|
98
|
+
* 보는 쪽 에이전트가 보내는 메시지의 상한. 사람 몫(sendLimiter)과 따로 더 좁게 둔다. 에이전트가 루프를
|
|
99
|
+
* 돌며 주인 세션을 두드려도 사람이 보낼 몫까지 다 쓰지 못한다. 에이전트 메시지는 두 상한을 다 탄다
|
|
100
|
+
*/
|
|
101
|
+
agentLimiter = new RateLimiter(AGENT_MESSAGE_RATE_LIMIT);
|
|
97
102
|
/** 보는 쪽이 12건으로 먼저 막는다. 주인 쪽은 릴레이에 쌓였다 한꺼번에 온 것도 받게 넉넉하다 */
|
|
98
103
|
receiveLimiter = new RateLimiter(MESSAGE_RECEIVE_LIMIT);
|
|
99
104
|
maxBuffered;
|
|
@@ -383,6 +388,8 @@ export class PeerNetwork {
|
|
|
383
388
|
owner: w.feed.ownerPerson,
|
|
384
389
|
status: w.feed.currentStatus,
|
|
385
390
|
events: w.feed.eventCount,
|
|
391
|
+
messages: w.messages,
|
|
392
|
+
...(w.agentPeek !== undefined ? { agentPeek: w.agentPeek } : {}),
|
|
386
393
|
}));
|
|
387
394
|
const ended = this.closedWatches.map((c) => ({
|
|
388
395
|
id: c.id,
|
|
@@ -665,9 +672,16 @@ export class PeerNetwork {
|
|
|
665
672
|
throw new PeerNetworkError('릴레이에 안 붙어 있어요');
|
|
666
673
|
// 보내기 직전에 센다. 명단이나 연결 때문에 못 보낸 시도는 한도를 안 깎는다.
|
|
667
674
|
// 주인 쪽 수신 한도는 MESSAGE_RECEIVE_LIMIT로 따로 정한다
|
|
668
|
-
|
|
675
|
+
// 에이전트 메시지는 두 한도를 다 본 뒤에 차감한다. 하나만 먼저 깎으면 다른 쪽에 막힌 시도가 몫을 쓴다
|
|
676
|
+
const limitKey = `${w.share}|${w.owner}`;
|
|
677
|
+
if (origin === 'agent' && !this.agentLimiter.has(limitKey)) {
|
|
678
|
+
throw new PeerNetworkError(`에이전트 메시지를 너무 자주 보냈어요. 공유마다 10분에 ${AGENT_MESSAGE_RATE_LIMIT}건까지예요`);
|
|
679
|
+
}
|
|
680
|
+
if (!this.sendLimiter.take(limitKey)) {
|
|
669
681
|
throw new PeerNetworkError('메시지를 너무 자주 보냈어요. 10분에 12건까지예요');
|
|
670
682
|
}
|
|
683
|
+
if (origin === 'agent')
|
|
684
|
+
this.agentLimiter.take(limitKey);
|
|
671
685
|
const id = newMessageId();
|
|
672
686
|
const body = {
|
|
673
687
|
t: 'msg',
|
|
@@ -692,6 +706,21 @@ export class PeerNetwork {
|
|
|
692
706
|
w.feed.setMessage(id, { status: result === 'queued' ? 'queued' : 'sent' });
|
|
693
707
|
return { id, status: w.feed.getMessage(id)?.status ?? 'sent' };
|
|
694
708
|
}
|
|
709
|
+
/**
|
|
710
|
+
* 보는 쪽 에이전트(ges_peer send): 보고 있는 원격 공유의 주인 세션에 `origin="agent"` 메시지를 넣는다.
|
|
711
|
+
* target은 주인 쪽 공유 id이고 보기 id도 받는다. 나머지는 사람 메시지와 같은 길이다. 주인 모델의
|
|
712
|
+
* 답은 따로 안 돌아오고 주인 세션 대화 기록에 남아서 다음 peek의 replies로 본다.
|
|
713
|
+
*/
|
|
714
|
+
async sendAgentMessage(target, raw) {
|
|
715
|
+
const w = pickWatch([...this.watches.values()], target);
|
|
716
|
+
const r = await this.sendMessage(w.id, raw, 'agent');
|
|
717
|
+
return {
|
|
718
|
+
...r,
|
|
719
|
+
share: w.share,
|
|
720
|
+
owner: w.feed.ownerPerson,
|
|
721
|
+
...(w.agentPeek !== undefined ? { agentPeek: w.agentPeek } : {}),
|
|
722
|
+
};
|
|
723
|
+
}
|
|
695
724
|
listMessages(watchId) {
|
|
696
725
|
const w = this.watches.get(watchId);
|
|
697
726
|
if (!w)
|
|
@@ -1018,6 +1047,7 @@ export class PeerNetwork {
|
|
|
1018
1047
|
sub,
|
|
1019
1048
|
salt: salt.toString('base64url'),
|
|
1020
1049
|
messages: owned.deliver !== undefined,
|
|
1050
|
+
agentPeek: owned.peek !== undefined,
|
|
1021
1051
|
});
|
|
1022
1052
|
this.options.state.audit('remote_watch', share, JSON.stringify({ person: this.personOf(from), sub }));
|
|
1023
1053
|
this.changed();
|
|
@@ -1527,6 +1557,7 @@ export class PeerNetwork {
|
|
|
1527
1557
|
// 늘지 않고 상한에도 안 닿아 1초마다 끝없이 청한다
|
|
1528
1558
|
w.retries = 0;
|
|
1529
1559
|
w.messages = msg.messages === true;
|
|
1560
|
+
w.agentPeek = typeof msg.agentPeek === 'boolean' ? msg.agentPeek : undefined;
|
|
1530
1561
|
w.key = streamKey(w.shareKey, Buffer.from(msg.salt, 'base64url'), w.share, this.key.id, msg.sub);
|
|
1531
1562
|
settle?.resolve('ok');
|
|
1532
1563
|
}
|