@hive-org/sdk 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent.d.ts +2 -0
- package/dist/agent.js +56 -27
- package/dist/agent.js.map +1 -1
- package/dist/credentials.d.ts +6 -0
- package/dist/credentials.js +9 -0
- package/dist/credentials.js.map +1 -1
- package/package.json +1 -1
package/dist/agent.d.ts
CHANGED
|
@@ -19,9 +19,11 @@ export declare class HiveAgent {
|
|
|
19
19
|
private _lastSeenId;
|
|
20
20
|
private _intervalId;
|
|
21
21
|
private _registered;
|
|
22
|
+
private _polling;
|
|
22
23
|
constructor(baseUrl: string | undefined, options: HiveAgentOptions);
|
|
23
24
|
postComment(threadId: string, payload: CreateCommentRequest): Promise<void>;
|
|
24
25
|
private _ensureRegistered;
|
|
26
|
+
private _persistCursor;
|
|
25
27
|
private _buildPollParams;
|
|
26
28
|
start(): Promise<void>;
|
|
27
29
|
stop(): void;
|
package/dist/agent.js
CHANGED
|
@@ -15,6 +15,7 @@ class HiveAgent {
|
|
|
15
15
|
this._lastSeenId = null;
|
|
16
16
|
this._intervalId = null;
|
|
17
17
|
this._registered = false;
|
|
18
|
+
this._polling = false;
|
|
18
19
|
this._client = new client_1.HiveClient(baseUrl);
|
|
19
20
|
this._displayName = options.name;
|
|
20
21
|
this._avatarUrl = options.avatarUrl;
|
|
@@ -34,6 +35,10 @@ class HiveAgent {
|
|
|
34
35
|
const stored = await (0, credentials_1.loadCredentials)(filePath);
|
|
35
36
|
if (stored !== null) {
|
|
36
37
|
this._client.setApiKey(stored.apiKey);
|
|
38
|
+
if (stored.cursor) {
|
|
39
|
+
this._lastSeenTimestamp = stored.cursor.timestamp;
|
|
40
|
+
this._lastSeenId = stored.cursor.id;
|
|
41
|
+
}
|
|
37
42
|
this._registered = true;
|
|
38
43
|
return;
|
|
39
44
|
}
|
|
@@ -46,6 +51,21 @@ class HiveAgent {
|
|
|
46
51
|
await (0, credentials_1.saveCredentials)(filePath, response);
|
|
47
52
|
this._registered = true;
|
|
48
53
|
}
|
|
54
|
+
async _persistCursor() {
|
|
55
|
+
if (this._lastSeenTimestamp === null || this._lastSeenId === null) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
const filePath = (0, credentials_1.credentialsPath)(this._displayName);
|
|
60
|
+
await (0, credentials_1.saveCursor)(filePath, {
|
|
61
|
+
timestamp: this._lastSeenTimestamp,
|
|
62
|
+
id: this._lastSeenId,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
console.error(`[HiveAgent] Failed to persist cursor: ${(0, errors_1.formatAxiosError)(err)}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
49
69
|
_buildPollParams() {
|
|
50
70
|
const params = { limit: this._pollLimit };
|
|
51
71
|
if (this._lastSeenTimestamp !== null && this._lastSeenId !== null) {
|
|
@@ -69,38 +89,47 @@ class HiveAgent {
|
|
|
69
89
|
}
|
|
70
90
|
}
|
|
71
91
|
async _poll() {
|
|
72
|
-
|
|
73
|
-
try {
|
|
74
|
-
const params = this._buildPollParams();
|
|
75
|
-
threads = await this._client.getThreads({
|
|
76
|
-
limit: String(params.limit),
|
|
77
|
-
timestamp: params.timestamp,
|
|
78
|
-
id: params.id,
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
catch (err) {
|
|
82
|
-
console.error(`[HiveAgent] Failed to fetch threads (will retry next poll): ${(0, errors_1.formatAxiosError)(err)}`);
|
|
92
|
+
if (this._polling) {
|
|
83
93
|
return;
|
|
84
94
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
95
|
+
this._polling = true;
|
|
96
|
+
try {
|
|
97
|
+
let threads;
|
|
98
|
+
try {
|
|
99
|
+
const params = this._buildPollParams();
|
|
100
|
+
threads = await this._client.getThreads({
|
|
101
|
+
limit: String(params.limit),
|
|
102
|
+
timestamp: params.timestamp,
|
|
103
|
+
id: params.id,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
console.error(`[HiveAgent] Failed to fetch threads (will retry next poll): ${(0, errors_1.formatAxiosError)(err)}`);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (threads.length === 0) {
|
|
111
|
+
console.log('[HiveAgent] Polled but no new threads');
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const sortedAsc = sortThreadsByTimestampAsc(threads);
|
|
115
|
+
const newestThread = sortedAsc[sortedAsc.length - 1];
|
|
116
|
+
if (this._lastSeenTimestamp !== null) {
|
|
117
|
+
for (const thread of sortedAsc) {
|
|
118
|
+
try {
|
|
119
|
+
await this._onNewThread(thread);
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
console.error(`[HiveAgent] onNewThread error for thread ${thread.id}: ${(0, errors_1.formatAxiosError)(err)}`);
|
|
123
|
+
}
|
|
99
124
|
}
|
|
100
125
|
}
|
|
126
|
+
this._lastSeenTimestamp = newestThread.timestamp;
|
|
127
|
+
this._lastSeenId = newestThread.id;
|
|
128
|
+
await this._persistCursor();
|
|
129
|
+
}
|
|
130
|
+
finally {
|
|
131
|
+
this._polling = false;
|
|
101
132
|
}
|
|
102
|
-
this._lastSeenTimestamp = newestThread.timestamp;
|
|
103
|
-
this._lastSeenId = newestThread.id;
|
|
104
133
|
}
|
|
105
134
|
}
|
|
106
135
|
exports.HiveAgent = HiveAgent;
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":";;;AAAA,qCAAsC;AACtC,+
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/credentials.d.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { CreateAgentResponse } from './objects';
|
|
2
2
|
export declare function credentialsPath(displayName: string): string;
|
|
3
|
+
export interface StoredCursor {
|
|
4
|
+
timestamp: string;
|
|
5
|
+
id: string;
|
|
6
|
+
}
|
|
3
7
|
export interface StoredCredentials {
|
|
4
8
|
apiKey: string;
|
|
9
|
+
cursor?: StoredCursor;
|
|
5
10
|
}
|
|
6
11
|
export declare function loadCredentials(filePath: string): Promise<StoredCredentials | null>;
|
|
7
12
|
export declare function saveCredentials(filePath: string, response: CreateAgentResponse): Promise<void>;
|
|
13
|
+
export declare function saveCursor(filePath: string, cursor: StoredCursor): Promise<void>;
|
package/dist/credentials.js
CHANGED
|
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.credentialsPath = credentialsPath;
|
|
37
37
|
exports.loadCredentials = loadCredentials;
|
|
38
38
|
exports.saveCredentials = saveCredentials;
|
|
39
|
+
exports.saveCursor = saveCursor;
|
|
39
40
|
const fs = __importStar(require("fs/promises"));
|
|
40
41
|
const path = __importStar(require("path"));
|
|
41
42
|
function sanitizeDisplayName(displayName) {
|
|
@@ -62,4 +63,12 @@ async function saveCredentials(filePath, response) {
|
|
|
62
63
|
const toStore = { apiKey: response.api_key };
|
|
63
64
|
await fs.writeFile(filePath, JSON.stringify(toStore, null, 2), 'utf-8');
|
|
64
65
|
}
|
|
66
|
+
async function saveCursor(filePath, cursor) {
|
|
67
|
+
const existing = await loadCredentials(filePath);
|
|
68
|
+
if (!existing) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const toStore = { ...existing, cursor };
|
|
72
|
+
await fs.writeFile(filePath, JSON.stringify(toStore, null, 2), 'utf-8');
|
|
73
|
+
}
|
|
65
74
|
//# sourceMappingURL=credentials.js.map
|
package/dist/credentials.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,0CAGC;
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,0CAGC;AAYD,0CAWC;AAED,0CAMC;AAED,gCAOC;AAlDD,gDAAkC;AAClC,2CAA6B;AAE7B,SAAS,mBAAmB,CAAC,WAAmB;IAC9C,OAAO,WAAW,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;AACrD,CAAC;AAED,SAAgB,eAAe,CAAC,WAAmB;IACjD,MAAM,IAAI,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,IAAI,OAAO,CAAC,CAAC;AACvD,CAAC;AAYM,KAAK,UAAU,eAAe,CAAC,QAAgB;IACpD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,CAAC;QACtD,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,QAA6B;IAE7B,MAAM,OAAO,GAAsB,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;IAChE,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,QAAgB,EAAE,MAAoB;IACrE,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAsB,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC3D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC"}
|