a2acalling 0.6.73 → 0.6.75
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/.a2a-manifest.json +2 -2
- package/.c8rc.json +16 -0
- package/.node-version +1 -0
- package/.serena/project.yml +126 -0
- package/ARCHITECTURE.md +40 -16
- package/CONVENTIONS.md +39 -6
- package/biome.json +27 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +146 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/coverage/src/index.html +131 -0
- package/coverage/src/index.js.html +313 -0
- package/coverage/src/lib/agent-card.js.html +418 -0
- package/coverage/src/lib/call-monitor.js.html +700 -0
- package/coverage/src/lib/callbook.js.html +1183 -0
- package/coverage/src/lib/claude-subagent.js.html +2173 -0
- package/coverage/src/lib/client.js.html +2134 -0
- package/coverage/src/lib/config.js.html +1525 -0
- package/coverage/src/lib/conversation-driver.js.html +1909 -0
- package/coverage/src/lib/conversations.js.html +2575 -0
- package/coverage/src/lib/crypto.js.html +424 -0
- package/coverage/src/lib/dashboard-events.js.html +724 -0
- package/coverage/src/lib/disclosure.js.html +2461 -0
- package/coverage/src/lib/external-ip.js.html +718 -0
- package/coverage/src/lib/index.html +506 -0
- package/coverage/src/lib/invite-host.js.html +754 -0
- package/coverage/src/lib/local-request.js.html +292 -0
- package/coverage/src/lib/logger.js.html +2116 -0
- package/coverage/src/lib/openclaw-integration.js.html +1102 -0
- package/coverage/src/lib/pid-file.js.html +394 -0
- package/coverage/src/lib/port-scanner.js.html +334 -0
- package/coverage/src/lib/prompt-template.js.html +1150 -0
- package/coverage/src/lib/runtime-adapter.js.html +2188 -0
- package/coverage/src/lib/summarizer.js.html +553 -0
- package/coverage/src/lib/summary-formatter.js.html +589 -0
- package/coverage/src/lib/summary-prompt.js.html +694 -0
- package/coverage/src/lib/tokens.js.html +2689 -0
- package/coverage/src/lib/turn-timeout.js.html +241 -0
- package/coverage/src/lib/update-checker.js.html +364 -0
- package/coverage/src/lib/update-manager.js.html +1024 -0
- package/coverage/src/routes/a2a.js.html +3724 -0
- package/coverage/src/routes/callbook.js.html +511 -0
- package/coverage/src/routes/dashboard.js.html +4819 -0
- package/coverage/src/routes/index.html +146 -0
- package/coverage/src/server.js.html +3622 -0
- package/coverage/tmp/coverage-1605378-1772576706365-0.json +1 -0
- package/coverage/tmp/coverage-1605384-1772576607459-0.json +1 -0
- package/coverage/tmp/coverage-1605410-1772576631155-0.json +1 -0
- package/coverage/tmp/coverage-1606942-1772576636869-0.json +1 -0
- package/coverage/tmp/coverage-1607004-1772576637454-0.json +1 -0
- package/coverage/tmp/coverage-1607044-1772576637876-0.json +1 -0
- package/coverage/tmp/coverage-1607096-1772576638356-0.json +1 -0
- package/coverage/tmp/coverage-1607145-1772576638777-0.json +1 -0
- package/coverage/tmp/coverage-1607201-1772576639277-0.json +1 -0
- package/coverage/tmp/coverage-1607247-1772576639755-0.json +1 -0
- package/coverage/tmp/coverage-1607317-1772576640083-0.json +1 -0
- package/coverage/tmp/coverage-1607381-1772576640465-0.json +1 -0
- package/coverage/tmp/coverage-1607446-1772576640868-0.json +1 -0
- package/coverage/tmp/coverage-1607501-1772576641662-0.json +1 -0
- package/coverage/tmp/coverage-1607534-1772576641565-0.json +1 -0
- package/coverage/tmp/coverage-1607627-1772576641871-0.json +1 -0
- package/coverage/tmp/coverage-1607665-1772576642172-0.json +1 -0
- package/coverage/tmp/coverage-1607714-1772576642577-0.json +1 -0
- package/coverage/tmp/coverage-1607788-1772576643466-0.json +1 -0
- package/coverage/tmp/coverage-1607924-1772576644678-0.json +1 -0
- package/coverage/tmp/coverage-1607978-1772576645154-0.json +1 -0
- package/coverage/tmp/coverage-1608035-1772576645564-0.json +1 -0
- package/coverage/tmp/coverage-1608106-1772576645967-0.json +1 -0
- package/coverage/tmp/coverage-1608179-1772576648656-0.json +1 -0
- package/coverage/tmp/coverage-1608196-1772576647367-0.json +1 -0
- package/coverage/tmp/coverage-1608217-1772576648557-0.json +1 -0
- package/coverage/tmp/coverage-1608256-1772576651378-0.json +1 -0
- package/coverage/tmp/coverage-1608265-1772576650058-0.json +1 -0
- package/coverage/tmp/coverage-1608289-1772576651358-0.json +1 -0
- package/coverage/tmp/coverage-1608591-1772576660465-0.json +1 -0
- package/coverage/tmp/coverage-1608648-1772576659272-0.json +1 -0
- package/coverage/tmp/coverage-1608665-1772576660374-0.json +1 -0
- package/coverage/tmp/coverage-1608677-1772576661268-0.json +1 -0
- package/coverage/tmp/coverage-1608684-1772576663968-0.json +1 -0
- package/coverage/tmp/coverage-1608692-1772576662575-0.json +1 -0
- package/coverage/tmp/coverage-1608701-1772576663873-0.json +1 -0
- package/coverage/tmp/coverage-1608718-1772576666674-0.json +1 -0
- package/coverage/tmp/coverage-1608725-1772576665463-0.json +1 -0
- package/coverage/tmp/coverage-1608738-1772576666577-0.json +1 -0
- package/coverage/tmp/coverage-1608753-1772576669664-0.json +1 -0
- package/coverage/tmp/coverage-1608763-1772576668275-0.json +1 -0
- package/coverage/tmp/coverage-1608771-1772576669563-0.json +1 -0
- package/coverage/tmp/coverage-1608828-1772576676574-0.json +1 -0
- package/coverage/tmp/coverage-1609244-1772576675272-0.json +1 -0
- package/coverage/tmp/coverage-1609342-1772576676478-0.json +1 -0
- package/coverage/tmp/coverage-1609450-1772576686954-0.json +1 -0
- package/coverage/tmp/coverage-1609841-1772576685466-0.json +1 -0
- package/coverage/tmp/coverage-1609925-1772576686855-0.json +1 -0
- package/coverage/tmp/coverage-1610399-1772576692469-0.json +1 -0
- package/coverage/tmp/coverage-1611283-1772576703062-0.json +1 -0
- package/coverage/tmp/coverage-1611294-1772576703755-0.json +1 -0
- package/docs/assessments/2026-02-27-google-a2a-protocol-assessment.md +292 -0
- package/docs/plans/2026-03-01-a2a-68-openclaw-integration-tests.md +676 -0
- package/docs/plans/2026-03-01-a2a-77-invoke-security-tests.md +661 -0
- package/docs/plans/2026-03-03-a2a-91-macos-packaging-plan.md +144 -0
- package/docs/signing-setup.md +49 -0
- package/eslint.config.js +16 -0
- package/knip.json +17 -0
- package/native/macos/certs/appldevcert.cer +0 -0
- package/native/macos/src-tauri/binaries/.gitkeep +0 -0
- package/native/macos/src-tauri/capabilities/default.json +11 -1
- package/native/macos/src-tauri/entitlements.plist +14 -0
- package/native/macos/src-tauri/src/discovery.rs +14 -3
- package/native/macos/src-tauri/src/health.rs +4 -0
- package/native/macos/src-tauri/src/lib.rs +52 -11
- package/native/macos/src-tauri/src/server.rs +262 -26
- package/native/macos/src-tauri/tauri.conf.json +13 -4
- package/package.json +16 -2
- package/pkg.config.json +14 -0
- package/scripts/build-standalone.sh +106 -0
- package/scripts/install-openclaw.js +3 -5
- package/scripts/smoke-test-standalone.sh +101 -0
- package/scripts/sync-version.sh +28 -0
- package/scripts/verify-app-bundle.sh +34 -0
- package/src/lib/agent-card.js +111 -0
- package/src/lib/client.js +290 -49
- package/src/lib/conversations.js +2 -0
- package/src/lib/local-request.js +69 -0
- package/src/lib/logger.js +2 -0
- package/src/lib/runtime-adapter.js +41 -1
- package/src/routes/a2a.js +393 -66
- package/src/routes/dashboard.js +1 -27
- package/src/server.js +19 -0
- package/.maestro/inbox/release-workflow-spam.md +0 -25
|
@@ -0,0 +1,694 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for src/lib/summary-prompt.js</title>
|
|
7
|
+
<meta charset="utf-8" />
|
|
8
|
+
<link rel="stylesheet" href="../../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
+
<style type='text/css'>
|
|
13
|
+
.coverage-summary .sorter {
|
|
14
|
+
background-image: url(../../sort-arrow-sprite.png);
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<div class='wrapper'>
|
|
21
|
+
<div class='pad1'>
|
|
22
|
+
<h1><a href="../../index.html">All files</a> / <a href="index.html">src/lib</a> summary-prompt.js</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">100% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>203/203</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">85.71% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>30/35</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>1/1</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">100% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>203/203</span>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
</div>
|
|
54
|
+
<p class="quiet">
|
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
+
</p>
|
|
57
|
+
<template id="filterTemplate">
|
|
58
|
+
<div class="quiet">
|
|
59
|
+
Filter:
|
|
60
|
+
<input type="search" id="fileSearch">
|
|
61
|
+
</div>
|
|
62
|
+
</template>
|
|
63
|
+
</div>
|
|
64
|
+
<div class='status-line high'></div>
|
|
65
|
+
<pre><table class="coverage">
|
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
+
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
+
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
+
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
+
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
+
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
+
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
+
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
+
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
+
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
+
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
+
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
+
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
+
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
+
<a name='L204'></a><a href='#L204'>204</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">26x</span>
|
|
270
|
+
<span class="cline-any cline-yes">26x</span>
|
|
271
|
+
<span class="cline-any cline-yes">26x</span>
|
|
272
|
+
<span class="cline-any cline-yes">26x</span>
|
|
273
|
+
<span class="cline-any cline-yes">26x</span>
|
|
274
|
+
<span class="cline-any cline-yes">26x</span>
|
|
275
|
+
<span class="cline-any cline-yes">26x</span>
|
|
276
|
+
<span class="cline-any cline-yes">26x</span>
|
|
277
|
+
<span class="cline-any cline-yes">26x</span>
|
|
278
|
+
<span class="cline-any cline-yes">26x</span>
|
|
279
|
+
<span class="cline-any cline-yes">26x</span>
|
|
280
|
+
<span class="cline-any cline-yes">26x</span>
|
|
281
|
+
<span class="cline-any cline-yes">26x</span>
|
|
282
|
+
<span class="cline-any cline-yes">26x</span>
|
|
283
|
+
<span class="cline-any cline-yes">26x</span>
|
|
284
|
+
<span class="cline-any cline-yes">26x</span>
|
|
285
|
+
<span class="cline-any cline-yes">26x</span>
|
|
286
|
+
<span class="cline-any cline-yes">26x</span>
|
|
287
|
+
<span class="cline-any cline-yes">26x</span>
|
|
288
|
+
<span class="cline-any cline-yes">26x</span>
|
|
289
|
+
<span class="cline-any cline-yes">26x</span>
|
|
290
|
+
<span class="cline-any cline-yes">26x</span>
|
|
291
|
+
<span class="cline-any cline-yes">26x</span>
|
|
292
|
+
<span class="cline-any cline-yes">26x</span>
|
|
293
|
+
<span class="cline-any cline-yes">26x</span>
|
|
294
|
+
<span class="cline-any cline-yes">26x</span>
|
|
295
|
+
<span class="cline-any cline-yes">26x</span>
|
|
296
|
+
<span class="cline-any cline-yes">18x</span>
|
|
297
|
+
<span class="cline-any cline-yes">18x</span>
|
|
298
|
+
<span class="cline-any cline-yes">18x</span>
|
|
299
|
+
<span class="cline-any cline-yes">18x</span>
|
|
300
|
+
<span class="cline-any cline-yes">18x</span>
|
|
301
|
+
<span class="cline-any cline-yes">18x</span>
|
|
302
|
+
<span class="cline-any cline-yes">18x</span>
|
|
303
|
+
<span class="cline-any cline-yes">18x</span>
|
|
304
|
+
<span class="cline-any cline-yes">18x</span>
|
|
305
|
+
<span class="cline-any cline-yes">18x</span>
|
|
306
|
+
<span class="cline-any cline-yes">18x</span>
|
|
307
|
+
<span class="cline-any cline-yes">18x</span>
|
|
308
|
+
<span class="cline-any cline-yes">18x</span>
|
|
309
|
+
<span class="cline-any cline-yes">18x</span>
|
|
310
|
+
<span class="cline-any cline-yes">18x</span>
|
|
311
|
+
<span class="cline-any cline-yes">18x</span>
|
|
312
|
+
<span class="cline-any cline-yes">18x</span>
|
|
313
|
+
<span class="cline-any cline-yes">18x</span>
|
|
314
|
+
<span class="cline-any cline-yes">18x</span>
|
|
315
|
+
<span class="cline-any cline-yes">18x</span>
|
|
316
|
+
<span class="cline-any cline-yes">1x</span>
|
|
317
|
+
<span class="cline-any cline-yes">1x</span>
|
|
318
|
+
<span class="cline-any cline-yes">1x</span>
|
|
319
|
+
<span class="cline-any cline-yes">18x</span>
|
|
320
|
+
<span class="cline-any cline-yes">18x</span>
|
|
321
|
+
<span class="cline-any cline-yes">18x</span>
|
|
322
|
+
<span class="cline-any cline-yes">15x</span>
|
|
323
|
+
<span class="cline-any cline-yes">15x</span>
|
|
324
|
+
<span class="cline-any cline-yes">15x</span>
|
|
325
|
+
<span class="cline-any cline-yes">15x</span>
|
|
326
|
+
<span class="cline-any cline-yes">2x</span>
|
|
327
|
+
<span class="cline-any cline-yes">2x</span>
|
|
328
|
+
<span class="cline-any cline-yes">15x</span>
|
|
329
|
+
<span class="cline-any cline-yes">15x</span>
|
|
330
|
+
<span class="cline-any cline-yes">18x</span>
|
|
331
|
+
<span class="cline-any cline-yes">18x</span>
|
|
332
|
+
<span class="cline-any cline-yes">18x</span>
|
|
333
|
+
<span class="cline-any cline-yes">2x</span>
|
|
334
|
+
<span class="cline-any cline-yes">2x</span>
|
|
335
|
+
<span class="cline-any cline-yes">2x</span>
|
|
336
|
+
<span class="cline-any cline-yes">1x</span>
|
|
337
|
+
<span class="cline-any cline-yes">1x</span>
|
|
338
|
+
<span class="cline-any cline-yes">1x</span>
|
|
339
|
+
<span class="cline-any cline-yes">1x</span>
|
|
340
|
+
<span class="cline-any cline-yes">1x</span>
|
|
341
|
+
<span class="cline-any cline-yes">2x</span>
|
|
342
|
+
<span class="cline-any cline-yes">2x</span>
|
|
343
|
+
<span class="cline-any cline-yes">1x</span>
|
|
344
|
+
<span class="cline-any cline-yes">1x</span>
|
|
345
|
+
<span class="cline-any cline-yes">1x</span>
|
|
346
|
+
<span class="cline-any cline-yes">1x</span>
|
|
347
|
+
<span class="cline-any cline-yes">1x</span>
|
|
348
|
+
<span class="cline-any cline-yes">1x</span>
|
|
349
|
+
<span class="cline-any cline-yes">2x</span>
|
|
350
|
+
<span class="cline-any cline-yes">2x</span>
|
|
351
|
+
<span class="cline-any cline-yes">1x</span>
|
|
352
|
+
<span class="cline-any cline-yes">1x</span>
|
|
353
|
+
<span class="cline-any cline-yes">1x</span>
|
|
354
|
+
<span class="cline-any cline-yes">1x</span>
|
|
355
|
+
<span class="cline-any cline-yes">1x</span>
|
|
356
|
+
<span class="cline-any cline-yes">2x</span>
|
|
357
|
+
<span class="cline-any cline-yes">2x</span>
|
|
358
|
+
<span class="cline-any cline-yes">2x</span>
|
|
359
|
+
<span class="cline-any cline-yes">2x</span>
|
|
360
|
+
<span class="cline-any cline-yes">5x</span>
|
|
361
|
+
<span class="cline-any cline-yes">5x</span>
|
|
362
|
+
<span class="cline-any cline-yes">2x</span>
|
|
363
|
+
<span class="cline-any cline-yes">2x</span>
|
|
364
|
+
<span class="cline-any cline-yes">2x</span>
|
|
365
|
+
<span class="cline-any cline-yes">2x</span>
|
|
366
|
+
<span class="cline-any cline-yes">18x</span>
|
|
367
|
+
<span class="cline-any cline-yes">18x</span>
|
|
368
|
+
<span class="cline-any cline-yes">18x</span>
|
|
369
|
+
<span class="cline-any cline-yes">2x</span>
|
|
370
|
+
<span class="cline-any cline-yes">2x</span>
|
|
371
|
+
<span class="cline-any cline-yes">2x</span>
|
|
372
|
+
<span class="cline-any cline-yes">2x</span>
|
|
373
|
+
<span class="cline-any cline-yes">2x</span>
|
|
374
|
+
<span class="cline-any cline-yes">2x</span>
|
|
375
|
+
<span class="cline-any cline-yes">2x</span>
|
|
376
|
+
<span class="cline-any cline-yes">2x</span>
|
|
377
|
+
<span class="cline-any cline-yes">2x</span>
|
|
378
|
+
<span class="cline-any cline-yes">2x</span>
|
|
379
|
+
<span class="cline-any cline-yes">2x</span>
|
|
380
|
+
<span class="cline-any cline-yes">2x</span>
|
|
381
|
+
<span class="cline-any cline-yes">2x</span>
|
|
382
|
+
<span class="cline-any cline-yes">2x</span>
|
|
383
|
+
<span class="cline-any cline-yes">2x</span>
|
|
384
|
+
<span class="cline-any cline-yes">18x</span>
|
|
385
|
+
<span class="cline-any cline-yes">18x</span>
|
|
386
|
+
<span class="cline-any cline-yes">18x</span>
|
|
387
|
+
<span class="cline-any cline-yes">18x</span>
|
|
388
|
+
<span class="cline-any cline-yes">21x</span>
|
|
389
|
+
<span class="cline-any cline-yes">21x</span>
|
|
390
|
+
<span class="cline-any cline-yes">18x</span>
|
|
391
|
+
<span class="cline-any cline-yes">18x</span>
|
|
392
|
+
<span class="cline-any cline-yes">18x</span>
|
|
393
|
+
<span class="cline-any cline-yes">18x</span>
|
|
394
|
+
<span class="cline-any cline-yes">18x</span>
|
|
395
|
+
<span class="cline-any cline-yes">18x</span>
|
|
396
|
+
<span class="cline-any cline-yes">18x</span>
|
|
397
|
+
<span class="cline-any cline-yes">18x</span>
|
|
398
|
+
<span class="cline-any cline-yes">18x</span>
|
|
399
|
+
<span class="cline-any cline-yes">18x</span>
|
|
400
|
+
<span class="cline-any cline-yes">18x</span>
|
|
401
|
+
<span class="cline-any cline-yes">18x</span>
|
|
402
|
+
<span class="cline-any cline-yes">18x</span>
|
|
403
|
+
<span class="cline-any cline-yes">18x</span>
|
|
404
|
+
<span class="cline-any cline-yes">18x</span>
|
|
405
|
+
<span class="cline-any cline-yes">18x</span>
|
|
406
|
+
<span class="cline-any cline-yes">18x</span>
|
|
407
|
+
<span class="cline-any cline-yes">18x</span>
|
|
408
|
+
<span class="cline-any cline-yes">18x</span>
|
|
409
|
+
<span class="cline-any cline-yes">18x</span>
|
|
410
|
+
<span class="cline-any cline-yes">18x</span>
|
|
411
|
+
<span class="cline-any cline-yes">18x</span>
|
|
412
|
+
<span class="cline-any cline-yes">18x</span>
|
|
413
|
+
<span class="cline-any cline-yes">18x</span>
|
|
414
|
+
<span class="cline-any cline-yes">18x</span>
|
|
415
|
+
<span class="cline-any cline-yes">18x</span>
|
|
416
|
+
<span class="cline-any cline-yes">18x</span>
|
|
417
|
+
<span class="cline-any cline-yes">18x</span>
|
|
418
|
+
<span class="cline-any cline-yes">18x</span>
|
|
419
|
+
<span class="cline-any cline-yes">18x</span>
|
|
420
|
+
<span class="cline-any cline-yes">18x</span>
|
|
421
|
+
<span class="cline-any cline-yes">18x</span>
|
|
422
|
+
<span class="cline-any cline-yes">18x</span>
|
|
423
|
+
<span class="cline-any cline-yes">18x</span>
|
|
424
|
+
<span class="cline-any cline-yes">18x</span>
|
|
425
|
+
<span class="cline-any cline-yes">18x</span>
|
|
426
|
+
<span class="cline-any cline-yes">18x</span>
|
|
427
|
+
<span class="cline-any cline-yes">18x</span>
|
|
428
|
+
<span class="cline-any cline-yes">18x</span>
|
|
429
|
+
<span class="cline-any cline-yes">18x</span>
|
|
430
|
+
<span class="cline-any cline-yes">18x</span>
|
|
431
|
+
<span class="cline-any cline-yes">18x</span>
|
|
432
|
+
<span class="cline-any cline-yes">18x</span>
|
|
433
|
+
<span class="cline-any cline-yes">18x</span>
|
|
434
|
+
<span class="cline-any cline-yes">18x</span>
|
|
435
|
+
<span class="cline-any cline-yes">18x</span>
|
|
436
|
+
<span class="cline-any cline-yes">18x</span>
|
|
437
|
+
<span class="cline-any cline-yes">18x</span>
|
|
438
|
+
<span class="cline-any cline-yes">18x</span>
|
|
439
|
+
<span class="cline-any cline-yes">18x</span>
|
|
440
|
+
<span class="cline-any cline-yes">18x</span>
|
|
441
|
+
<span class="cline-any cline-yes">18x</span>
|
|
442
|
+
<span class="cline-any cline-yes">18x</span>
|
|
443
|
+
<span class="cline-any cline-yes">18x</span>
|
|
444
|
+
<span class="cline-any cline-yes">18x</span>
|
|
445
|
+
<span class="cline-any cline-yes">18x</span>
|
|
446
|
+
<span class="cline-any cline-yes">18x</span>
|
|
447
|
+
<span class="cline-any cline-yes">18x</span>
|
|
448
|
+
<span class="cline-any cline-yes">18x</span>
|
|
449
|
+
<span class="cline-any cline-yes">18x</span>
|
|
450
|
+
<span class="cline-any cline-yes">18x</span>
|
|
451
|
+
<span class="cline-any cline-yes">18x</span>
|
|
452
|
+
<span class="cline-any cline-yes">18x</span>
|
|
453
|
+
<span class="cline-any cline-yes">18x</span>
|
|
454
|
+
<span class="cline-any cline-yes">18x</span>
|
|
455
|
+
<span class="cline-any cline-yes">18x</span>
|
|
456
|
+
<span class="cline-any cline-yes">18x</span>
|
|
457
|
+
<span class="cline-any cline-yes">18x</span>
|
|
458
|
+
<span class="cline-any cline-yes">18x</span>
|
|
459
|
+
<span class="cline-any cline-yes">18x</span>
|
|
460
|
+
<span class="cline-any cline-yes">18x</span>
|
|
461
|
+
<span class="cline-any cline-yes">18x</span>
|
|
462
|
+
<span class="cline-any cline-yes">18x</span>
|
|
463
|
+
<span class="cline-any cline-yes">18x</span>
|
|
464
|
+
<span class="cline-any cline-yes">18x</span>
|
|
465
|
+
<span class="cline-any cline-yes">18x</span>
|
|
466
|
+
<span class="cline-any cline-yes">18x</span>
|
|
467
|
+
<span class="cline-any cline-yes">18x</span>
|
|
468
|
+
<span class="cline-any cline-yes">18x</span>
|
|
469
|
+
<span class="cline-any cline-yes">18x</span>
|
|
470
|
+
<span class="cline-any cline-yes">26x</span>
|
|
471
|
+
<span class="cline-any cline-yes">26x</span>
|
|
472
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/**
|
|
473
|
+
* Unified Summary Prompt Builder
|
|
474
|
+
*
|
|
475
|
+
* Builds a comprehensive summary prompt that includes all context
|
|
476
|
+
* needed for accurate, auditable conversation summaries:
|
|
477
|
+
*
|
|
478
|
+
* - Conversation objective (why the call happened)
|
|
479
|
+
* - Disclosure manifest (what's in scope for this tier)
|
|
480
|
+
* - Collaboration state (phase, overlap score, threads)
|
|
481
|
+
* - Full transcript
|
|
482
|
+
* - Owner context
|
|
483
|
+
*
|
|
484
|
+
* Used by both OpenClaw and spawned-agent summary paths.
|
|
485
|
+
*/
|
|
486
|
+
|
|
487
|
+
/**
|
|
488
|
+
* Build a unified summary prompt with full context.
|
|
489
|
+
*
|
|
490
|
+
* @param {object} options
|
|
491
|
+
* @param {Array} options.transcript - [{direction, content}]
|
|
492
|
+
* @param {object} options.callerInfo - {name, owner, context}
|
|
493
|
+
* @param {string} [options.conversationObjective] - Why this call was made
|
|
494
|
+
* @param {object} [options.disclosure] - {topics, objectives, doNotDiscuss, neverDisclose}
|
|
495
|
+
* @param {object} [options.collaborationState] - {phase, overlapScore, activeThreads, ...}
|
|
496
|
+
* @param {object} [options.ownerContext] - {agentName, ownerName, goals}
|
|
497
|
+
* @returns {string} The complete prompt
|
|
498
|
+
*/
|
|
499
|
+
function buildUnifiedSummaryPrompt(options = {}) {
|
|
500
|
+
const {
|
|
501
|
+
transcript = [],
|
|
502
|
+
callerInfo = {},
|
|
503
|
+
conversationObjective,
|
|
504
|
+
disclosure,
|
|
505
|
+
collaborationState,
|
|
506
|
+
ownerContext = {}
|
|
507
|
+
} = options;
|
|
508
|
+
|
|
509
|
+
const sections = [];
|
|
510
|
+
|
|
511
|
+
// ── Header ──
|
|
512
|
+
sections.push(`You just finished an A2A agent-to-agent call. Summarize it for your owner.
|
|
513
|
+
|
|
514
|
+
Your tone: friendly, clear, and genuinely helpful. Lead with what matters most.
|
|
515
|
+
Write like you're briefing a smart friend — not filing a report.`);
|
|
516
|
+
|
|
517
|
+
// ── Conversation Objective ──
|
|
518
|
+
if (conversationObjective) {
|
|
519
|
+
sections.push(`## Why This Call Happened
|
|
520
|
+
${conversationObjective}`);
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
// ── Owner Context ──
|
|
524
|
+
if (ownerContext.agentName || ownerContext.ownerName || ownerContext.goals) {
|
|
525
|
+
const parts = [];
|
|
526
|
+
if (ownerContext.agentName) parts.push(`You are: ${ownerContext.agentName}`);
|
|
527
|
+
if (ownerContext.ownerName) parts.push(`Your owner: ${ownerContext.ownerName}`);
|
|
528
|
+
if (ownerContext.goals?.length) {
|
|
529
|
+
parts.push(`Owner's current goals:\n${ownerContext.goals.map(g => `- ${g}`).join('\n')}`);
|
|
530
|
+
}
|
|
531
|
+
sections.push(`## Your Owner\n${parts.join('\n')}`);
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
// ── Disclosure Manifest ──
|
|
535
|
+
if (disclosure) {
|
|
536
|
+
const discParts = [];
|
|
537
|
+
|
|
538
|
+
if (disclosure.topics?.length) {
|
|
539
|
+
discParts.push('### Topics In Scope');
|
|
540
|
+
for (const t of disclosure.topics) {
|
|
541
|
+
discParts.push(`- **${t.topic}**: ${t.description}`);
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
if (disclosure.objectives?.length) {
|
|
546
|
+
discParts.push('\n### Conversation Objectives');
|
|
547
|
+
for (const o of disclosure.objectives) {
|
|
548
|
+
const label = o.objective <span class="branch-0 cbranch-no" title="branch not covered" >|| o.topic;</span>
|
|
549
|
+
discParts.push(`- **${label}**: ${o.description}`);
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
if (disclosure.doNotDiscuss?.length) {
|
|
554
|
+
discParts.push('\n### Do Not Discuss (Deflect These)');
|
|
555
|
+
for (const d of disclosure.doNotDiscuss) {
|
|
556
|
+
discParts.push(`- **${d.topic}**: ${d.reason}`);
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
if (disclosure.neverDisclose?.length) {
|
|
561
|
+
discParts.push('\n### Never Disclose (Hard Blocks)');
|
|
562
|
+
for (const n of disclosure.neverDisclose) {
|
|
563
|
+
discParts.push(`- ${n}`);
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
sections.push(`## Disclosure Boundaries\nThese are the rules your agent operated under. Check whether they were followed.\n\n${discParts.join('\n')}`);
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
// ── Collaboration State ──
|
|
571
|
+
if (collaborationState) {
|
|
572
|
+
const cs = collaborationState;
|
|
573
|
+
sections.push(`## Collaboration State at End of Call
|
|
574
|
+
- **Phase:** ${cs.phase <span class="branch-0 cbranch-no" title="branch not covered" >|| 'unknown'}</span> (handshake -> exploring -> deepening -> converging -> close)
|
|
575
|
+
- **Overlap Score:** ${cs.overlapScore != null ? cs.overlapScore.toFixed(2) <span class="branch-0 cbranch-no" title="branch not covered" >: 'unknown'}</span>/1.00
|
|
576
|
+
- **Turn Count:** ${cs.turnCount <span class="branch-0 cbranch-no" title="branch not covered" >|| 'unknown'}</span>
|
|
577
|
+
- **Active Threads:** ${cs.activeThreads?.length ? cs.activeThreads.join(', ') : 'none identified'}
|
|
578
|
+
- **Candidate Collaborations:** ${cs.candidateCollaborations?.length ? cs.candidateCollaborations.join(', ') : 'none yet'}
|
|
579
|
+
- **Close Signal:** ${cs.closeSignal <span class="branch-0 cbranch-no" title="branch not covered" >? 'yes' </span>: 'no'}
|
|
580
|
+
|
|
581
|
+
### What Overlap Score Means
|
|
582
|
+
- 0.00–0.30: Minimal alignment — different domains, graceful mismatch expected
|
|
583
|
+
- 0.30–0.60: Moderate — some shared interests, worth exploring
|
|
584
|
+
- 0.60–0.80: Strong — clear mutual value, specific opportunities emerging
|
|
585
|
+
- 0.80–1.00: Deep alignment — ready for concrete collaboration`);
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
// ── Transcript ──
|
|
589
|
+
const callerLabel = callerInfo.name || 'Caller';
|
|
590
|
+
const messageText = transcript.map(m => {
|
|
591
|
+
const role = m.direction === 'inbound' ? `[${callerLabel}]` : '[You]';
|
|
592
|
+
return `${role}: ${m.content}`;
|
|
593
|
+
}).join('\n\n');
|
|
594
|
+
|
|
595
|
+
sections.push(`## Caller
|
|
596
|
+
${callerInfo.name ? `**Name:** ${callerInfo.name}` : 'Unknown caller'}
|
|
597
|
+
${callerInfo.owner ? `**Represents:** ${callerInfo.owner}` : ''}
|
|
598
|
+
${callerInfo.context ? `**Context:** ${callerInfo.context}` : ''}`);
|
|
599
|
+
|
|
600
|
+
sections.push(`## Full Transcript\n${messageText}`);
|
|
601
|
+
|
|
602
|
+
// ── Output Instructions ──
|
|
603
|
+
sections.push(`## Your Task
|
|
604
|
+
|
|
605
|
+
Summarize this call. Return valid JSON matching this exact schema:
|
|
606
|
+
|
|
607
|
+
{
|
|
608
|
+
"headline": "One sentence — the single most important takeaway for the owner",
|
|
609
|
+
|
|
610
|
+
"vibe": "productive | exploratory | mismatch | guarded | breakthrough",
|
|
611
|
+
|
|
612
|
+
"quickTake": [
|
|
613
|
+
"Most important discovery or outcome",
|
|
614
|
+
"Key opportunity or concern",
|
|
615
|
+
"Recommended immediate action"
|
|
616
|
+
],
|
|
617
|
+
|
|
618
|
+
"who": {
|
|
619
|
+
"name": "Caller name",
|
|
620
|
+
"represents": "Who they work for or represent",
|
|
621
|
+
"keyFacts": ["Notable fact 1", "Notable fact 2"]
|
|
622
|
+
},
|
|
623
|
+
|
|
624
|
+
"collaboration": {
|
|
625
|
+
"score": 0.00,
|
|
626
|
+
"scoreJustification": "Why this score — what aligned, what didn't",
|
|
627
|
+
"rating": "HIGH | MEDIUM | LOW",
|
|
628
|
+
"opportunities": ["Specific opportunity with details"]
|
|
629
|
+
},
|
|
630
|
+
|
|
631
|
+
"exchange": {
|
|
632
|
+
"weGot": ["Info or value we received"],
|
|
633
|
+
"weGave": ["Info or value we shared"],
|
|
634
|
+
"balance": "favorable | even | unfavorable"
|
|
635
|
+
},
|
|
636
|
+
|
|
637
|
+
"disclosure": {
|
|
638
|
+
"compliance": "clean | minor_concern | violation",
|
|
639
|
+
"topicsCovered": ["In-scope topics that were discussed"],
|
|
640
|
+
"topicsAvoided": ["Topics that were properly deflected"],
|
|
641
|
+
"concerns": ["Any info shared that shouldn't have been, or empty array"]
|
|
642
|
+
},
|
|
643
|
+
|
|
644
|
+
"objectives": {
|
|
645
|
+
"achieved": ["Objectives that were met"],
|
|
646
|
+
"partiallyAchieved": ["Objectives with some progress"],
|
|
647
|
+
"notAchieved": ["Objectives not addressed"]
|
|
648
|
+
},
|
|
649
|
+
|
|
650
|
+
"nextSteps": [
|
|
651
|
+
"Specific actionable follow-up 1",
|
|
652
|
+
"Specific actionable follow-up 2"
|
|
653
|
+
],
|
|
654
|
+
|
|
655
|
+
"trust": {
|
|
656
|
+
"level": "maintain | increase | decrease | revoke",
|
|
657
|
+
"reasoning": "One sentence — why this trust recommendation"
|
|
658
|
+
},
|
|
659
|
+
|
|
660
|
+
"assessment": "One sentence — strategic value judgment for the owner"
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
Important:
|
|
664
|
+
- Validate the collaboration score — does it match what actually happened in the conversation?
|
|
665
|
+
- Check disclosure compliance — was any never_disclose or do_not_discuss info leaked?
|
|
666
|
+
- Be honest about objectives — don't inflate partial progress into "achieved"
|
|
667
|
+
- quickTake should be genuinely useful, not generic platitudes
|
|
668
|
+
|
|
669
|
+
JSON:`);
|
|
670
|
+
|
|
671
|
+
return sections.join('\n\n');
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
module.exports = { buildUnifiedSummaryPrompt };
|
|
675
|
+
</pre></td></tr></table></pre>
|
|
676
|
+
|
|
677
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
678
|
+
</div><!-- /wrapper -->
|
|
679
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
680
|
+
Code coverage generated by
|
|
681
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
682
|
+
at 2026-03-03T22:25:10.857Z
|
|
683
|
+
</div>
|
|
684
|
+
<script src="../../prettify.js"></script>
|
|
685
|
+
<script>
|
|
686
|
+
window.onload = function () {
|
|
687
|
+
prettyPrint();
|
|
688
|
+
};
|
|
689
|
+
</script>
|
|
690
|
+
<script src="../../sorter.js"></script>
|
|
691
|
+
<script src="../../block-navigation.js"></script>
|
|
692
|
+
</body>
|
|
693
|
+
</html>
|
|
694
|
+
|