@daemux/human-behavior 0.4.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/.claude-plugin/plugin.json +6 -0
- package/dist/index.d.ts +51 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +173 -0
- package/dist/index.js.map +1 -0
- package/package.json +32 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Human-Like Behavior Plugin
|
|
3
|
+
* Simulates natural response patterns for agent messaging channels.
|
|
4
|
+
* Extracted from daemux-cli core as a standalone feature plugin.
|
|
5
|
+
*/
|
|
6
|
+
import type { LogLevel } from '@daemux/plugin-sdk';
|
|
7
|
+
export interface HumanBehaviorConfig {
|
|
8
|
+
typingDelayPerChar: number;
|
|
9
|
+
minResponseDelay: number;
|
|
10
|
+
maxResponseDelay: number;
|
|
11
|
+
maxChunkLength: number;
|
|
12
|
+
chunkPause: number;
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare class HumanBehavior {
|
|
16
|
+
private config;
|
|
17
|
+
constructor(config: HumanBehaviorConfig);
|
|
18
|
+
calculateTypingDelay(text: string): number;
|
|
19
|
+
calculateResponseDelay(): number;
|
|
20
|
+
chunkMessage(text: string, maxLength?: number): string[];
|
|
21
|
+
simulateHumanResponse(text: string, sendFn: (chunk: string) => Promise<void>, typingFn?: (active: boolean) => Promise<void>): Promise<void>;
|
|
22
|
+
isEnabled(): boolean;
|
|
23
|
+
getConfig(): HumanBehaviorConfig;
|
|
24
|
+
private findBreakPoint;
|
|
25
|
+
private findLastSentenceEnd;
|
|
26
|
+
}
|
|
27
|
+
export declare function createHumanBehavior(config?: Partial<HumanBehaviorConfig>): HumanBehavior;
|
|
28
|
+
export declare const manifest: {
|
|
29
|
+
name: string;
|
|
30
|
+
version: string;
|
|
31
|
+
description: string;
|
|
32
|
+
};
|
|
33
|
+
interface PluginAPI {
|
|
34
|
+
log(level: LogLevel, message: string, data?: Record<string, unknown>): void;
|
|
35
|
+
getState<T>(key: string): Promise<T | undefined>;
|
|
36
|
+
setState<T>(key: string, value: T): Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
export declare function activate(api: PluginAPI): Promise<void>;
|
|
39
|
+
export declare function deactivate(): Promise<void>;
|
|
40
|
+
export declare function getBehavior(): HumanBehavior | null;
|
|
41
|
+
declare const _default: {
|
|
42
|
+
manifest: {
|
|
43
|
+
name: string;
|
|
44
|
+
version: string;
|
|
45
|
+
description: string;
|
|
46
|
+
};
|
|
47
|
+
activate: typeof activate;
|
|
48
|
+
deactivate: typeof deactivate;
|
|
49
|
+
};
|
|
50
|
+
export default _default;
|
|
51
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAMnD,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAwCD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,EAAE,mBAAmB;IAIvC,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAK1C,sBAAsB,IAAI,MAAM;IAKhC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAuBlD,qBAAqB,CACzB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACxC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAC5C,OAAO,CAAC,IAAI,CAAC;IAyChB,SAAS,IAAI,OAAO;IAIpB,SAAS,IAAI,mBAAmB;IAQhC,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,mBAAmB;CAc5B;AAMD,wBAAgB,mBAAmB,CACjC,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACpC,aAAa,CAGf;AAMD,eAAO,MAAM,QAAQ;;;;CAIpB,CAAC;AAMF,UAAU,SAAS;IACjB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5E,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACjD,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AAQD,wBAAsB,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAa5D;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAGhD;AAED,wBAAgB,WAAW,IAAI,aAAa,GAAG,IAAI,CAElD;;;;;;;;;;AAED,wBAAkD"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Human-Like Behavior Plugin
|
|
3
|
+
* Simulates natural response patterns for agent messaging channels.
|
|
4
|
+
* Extracted from daemux-cli core as a standalone feature plugin.
|
|
5
|
+
*/
|
|
6
|
+
const DEFAULT_CONFIG = {
|
|
7
|
+
typingDelayPerChar: 30,
|
|
8
|
+
minResponseDelay: 1000,
|
|
9
|
+
maxResponseDelay: 3000,
|
|
10
|
+
maxChunkLength: 2000,
|
|
11
|
+
chunkPause: 1500,
|
|
12
|
+
enabled: false,
|
|
13
|
+
};
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Delay Helpers
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
const MIN_TYPING_DELAY = 500;
|
|
18
|
+
const MAX_TYPING_DELAY = 5000;
|
|
19
|
+
function clamp(value, min, max) {
|
|
20
|
+
return Math.max(min, Math.min(max, value));
|
|
21
|
+
}
|
|
22
|
+
function sleep(ms) {
|
|
23
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
24
|
+
}
|
|
25
|
+
let logger = { debug: () => { } };
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
// HumanBehavior Class
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
export class HumanBehavior {
|
|
30
|
+
config;
|
|
31
|
+
constructor(config) {
|
|
32
|
+
this.config = config;
|
|
33
|
+
}
|
|
34
|
+
calculateTypingDelay(text) {
|
|
35
|
+
const raw = text.length * this.config.typingDelayPerChar;
|
|
36
|
+
return clamp(raw, MIN_TYPING_DELAY, MAX_TYPING_DELAY);
|
|
37
|
+
}
|
|
38
|
+
calculateResponseDelay() {
|
|
39
|
+
const { minResponseDelay, maxResponseDelay } = this.config;
|
|
40
|
+
return minResponseDelay + Math.random() * (maxResponseDelay - minResponseDelay);
|
|
41
|
+
}
|
|
42
|
+
chunkMessage(text, maxLength) {
|
|
43
|
+
const limit = maxLength ?? this.config.maxChunkLength;
|
|
44
|
+
if (text.length <= limit) {
|
|
45
|
+
return [text];
|
|
46
|
+
}
|
|
47
|
+
const chunks = [];
|
|
48
|
+
let remaining = text;
|
|
49
|
+
while (remaining.length > 0) {
|
|
50
|
+
if (remaining.length <= limit) {
|
|
51
|
+
chunks.push(remaining);
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
const cutIndex = this.findBreakPoint(remaining, limit);
|
|
55
|
+
chunks.push(remaining.slice(0, cutIndex).trimEnd());
|
|
56
|
+
remaining = remaining.slice(cutIndex).trimStart();
|
|
57
|
+
}
|
|
58
|
+
return chunks.filter((c) => c.length > 0);
|
|
59
|
+
}
|
|
60
|
+
async simulateHumanResponse(text, sendFn, typingFn) {
|
|
61
|
+
if (!this.config.enabled) {
|
|
62
|
+
await sendFn(text);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const chunks = this.chunkMessage(text);
|
|
66
|
+
const responseDelay = this.calculateResponseDelay();
|
|
67
|
+
if (typingFn) {
|
|
68
|
+
await typingFn(true);
|
|
69
|
+
}
|
|
70
|
+
await sleep(responseDelay);
|
|
71
|
+
for (let i = 0; i < chunks.length; i++) {
|
|
72
|
+
const chunk = chunks[i];
|
|
73
|
+
if (typingFn && i > 0) {
|
|
74
|
+
await typingFn(true);
|
|
75
|
+
}
|
|
76
|
+
const typingDelay = this.calculateTypingDelay(chunk);
|
|
77
|
+
await sleep(typingDelay);
|
|
78
|
+
if (typingFn) {
|
|
79
|
+
await typingFn(false);
|
|
80
|
+
}
|
|
81
|
+
await sendFn(chunk);
|
|
82
|
+
if (i < chunks.length - 1) {
|
|
83
|
+
await sleep(this.config.chunkPause);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
logger.debug('Human-like response delivered', {
|
|
87
|
+
chunks: chunks.length,
|
|
88
|
+
totalLength: text.length,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
isEnabled() {
|
|
92
|
+
return this.config.enabled;
|
|
93
|
+
}
|
|
94
|
+
getConfig() {
|
|
95
|
+
return { ...this.config };
|
|
96
|
+
}
|
|
97
|
+
// -------------------------------------------------------------------------
|
|
98
|
+
// Private Helpers
|
|
99
|
+
// -------------------------------------------------------------------------
|
|
100
|
+
findBreakPoint(text, maxLength) {
|
|
101
|
+
const segment = text.slice(0, maxLength);
|
|
102
|
+
const paragraphBreak = segment.lastIndexOf('\n\n');
|
|
103
|
+
if (paragraphBreak > maxLength * 0.3) {
|
|
104
|
+
return paragraphBreak + 2;
|
|
105
|
+
}
|
|
106
|
+
const sentenceMatch = this.findLastSentenceEnd(segment);
|
|
107
|
+
if (sentenceMatch > maxLength * 0.3) {
|
|
108
|
+
return sentenceMatch;
|
|
109
|
+
}
|
|
110
|
+
const lineBreak = segment.lastIndexOf('\n');
|
|
111
|
+
if (lineBreak > maxLength * 0.3) {
|
|
112
|
+
return lineBreak + 1;
|
|
113
|
+
}
|
|
114
|
+
const spaceBreak = segment.lastIndexOf(' ');
|
|
115
|
+
if (spaceBreak > maxLength * 0.3) {
|
|
116
|
+
return spaceBreak + 1;
|
|
117
|
+
}
|
|
118
|
+
return maxLength;
|
|
119
|
+
}
|
|
120
|
+
findLastSentenceEnd(text) {
|
|
121
|
+
let lastEnd = -1;
|
|
122
|
+
for (let i = text.length - 1; i >= 0; i--) {
|
|
123
|
+
const char = text[i];
|
|
124
|
+
if (char === '.' || char === '!' || char === '?') {
|
|
125
|
+
const next = text[i + 1];
|
|
126
|
+
if (next === ' ' || next === '\n' || next === undefined) {
|
|
127
|
+
lastEnd = i + 1;
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return lastEnd;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// ---------------------------------------------------------------------------
|
|
136
|
+
// Factory
|
|
137
|
+
// ---------------------------------------------------------------------------
|
|
138
|
+
export function createHumanBehavior(config) {
|
|
139
|
+
const merged = { ...DEFAULT_CONFIG, ...config };
|
|
140
|
+
return new HumanBehavior(merged);
|
|
141
|
+
}
|
|
142
|
+
// ---------------------------------------------------------------------------
|
|
143
|
+
// Plugin Manifest
|
|
144
|
+
// ---------------------------------------------------------------------------
|
|
145
|
+
export const manifest = {
|
|
146
|
+
name: 'daemux-human-behavior',
|
|
147
|
+
version: '0.4.0',
|
|
148
|
+
description: 'Human-like response behavior simulation for messaging channels',
|
|
149
|
+
};
|
|
150
|
+
// ---------------------------------------------------------------------------
|
|
151
|
+
// Plugin Lifecycle
|
|
152
|
+
// ---------------------------------------------------------------------------
|
|
153
|
+
let instance = null;
|
|
154
|
+
export async function activate(api) {
|
|
155
|
+
api.log('info', 'Activating human-behavior plugin');
|
|
156
|
+
logger = {
|
|
157
|
+
debug(message, data) {
|
|
158
|
+
api.log('debug', message, data);
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
const savedConfig = await api.getState('human-behavior:config');
|
|
162
|
+
instance = createHumanBehavior(savedConfig ?? undefined);
|
|
163
|
+
api.log('info', 'Human-behavior plugin activated');
|
|
164
|
+
}
|
|
165
|
+
export async function deactivate() {
|
|
166
|
+
instance = null;
|
|
167
|
+
logger = { debug: () => { } };
|
|
168
|
+
}
|
|
169
|
+
export function getBehavior() {
|
|
170
|
+
return instance;
|
|
171
|
+
}
|
|
172
|
+
export default { manifest, activate, deactivate };
|
|
173
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@daemux/human-behavior",
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"description": "Human-like response behavior simulation for messaging channels",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"files": ["dist", ".claude-plugin"],
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"dev": "tsc --watch",
|
|
12
|
+
"clean": "rm -rf dist",
|
|
13
|
+
"typecheck": "tsc --noEmit"
|
|
14
|
+
},
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@daemux/plugin-sdk": "^0.5.0"
|
|
17
|
+
},
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@types/node": "^22.0.0",
|
|
20
|
+
"typescript": "^5.9.0"
|
|
21
|
+
},
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"access": "public"
|
|
24
|
+
},
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/daemux/daemux-plugins.git",
|
|
28
|
+
"directory": "features/human-behavior"
|
|
29
|
+
},
|
|
30
|
+
"keywords": ["daemux", "human-behavior", "plugin"],
|
|
31
|
+
"license": "MIT"
|
|
32
|
+
}
|