@framers/agentos 0.1.52 → 0.1.53
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/api/AgentOS.d.ts +10 -10
- package/dist/api/AgentOS.d.ts.map +1 -1
- package/dist/channels/index.d.ts +2 -1
- package/dist/channels/index.d.ts.map +1 -1
- package/dist/channels/index.js +2 -1
- package/dist/channels/index.js.map +1 -1
- package/dist/core/agency/index.d.ts +1 -2
- package/dist/core/agency/index.d.ts.map +1 -1
- package/dist/core/agency/index.js +1 -2
- package/dist/core/agency/index.js.map +1 -1
- package/dist/core/agents/AgentCore.d.ts +8 -19
- package/dist/core/agents/AgentCore.d.ts.map +1 -1
- package/dist/core/agents/AgentCore.js +7 -15
- package/dist/core/agents/AgentCore.js.map +1 -1
- package/dist/core/agents/AgentFactory.d.ts +9 -13
- package/dist/core/agents/AgentFactory.d.ts.map +1 -1
- package/dist/core/agents/AgentFactory.js +9 -13
- package/dist/core/agents/AgentFactory.js.map +1 -1
- package/dist/core/audio/SilenceDetector.d.ts +5 -5
- package/dist/core/audio/SilenceDetector.js +5 -5
- package/dist/core/evaluation/index.d.ts +2 -2
- package/dist/core/evaluation/index.js +2 -2
- package/dist/core/hitl/index.d.ts +1 -2
- package/dist/core/hitl/index.d.ts.map +1 -1
- package/dist/core/hitl/index.js +1 -2
- package/dist/core/hitl/index.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/llm/IPromptEngine.d.ts +13 -8
- package/dist/core/llm/IPromptEngine.d.ts.map +1 -1
- package/dist/core/llm/IPromptEngine.js.map +1 -1
- package/dist/core/marketplace/index.d.ts +2 -2
- package/dist/core/marketplace/index.js +2 -2
- package/dist/core/observability/index.d.ts +2 -2
- package/dist/core/observability/index.js +2 -2
- package/dist/core/planning/index.d.ts +1 -2
- package/dist/core/planning/index.d.ts.map +1 -1
- package/dist/core/planning/index.js +1 -2
- package/dist/core/planning/index.js.map +1 -1
- package/dist/core/provenance/index.d.ts +2 -2
- package/dist/core/provenance/index.js +2 -2
- package/dist/core/safety/index.d.ts +3 -2
- package/dist/core/safety/index.d.ts.map +1 -1
- package/dist/core/safety/index.js +3 -2
- package/dist/core/safety/index.js.map +1 -1
- package/dist/core/sandbox/index.d.ts +2 -2
- package/dist/core/sandbox/index.js +2 -2
- package/dist/core/structured/index.d.ts +1 -2
- package/dist/core/structured/index.d.ts.map +1 -1
- package/dist/core/structured/index.js +1 -2
- package/dist/core/structured/index.js.map +1 -1
- package/dist/core/tools/index.d.ts +2 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +2 -1
- package/dist/core/tools/index.js.map +1 -1
- package/dist/discovery/index.d.ts +2 -1
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +2 -1
- package/dist/discovery/index.js.map +1 -1
- package/dist/memory/index.d.ts +2 -1
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +2 -1
- package/dist/memory/index.js.map +1 -1
- package/dist/rag/audit/index.d.ts +5 -2
- package/dist/rag/audit/index.d.ts.map +1 -1
- package/dist/rag/audit/index.js +5 -2
- package/dist/rag/audit/index.js.map +1 -1
- package/dist/rag/implementations/vector_stores/InMemoryVectorStore.d.ts +1 -2
- package/dist/rag/implementations/vector_stores/InMemoryVectorStore.d.ts.map +1 -1
- package/dist/rag/implementations/vector_stores/InMemoryVectorStore.js +1 -2
- package/dist/rag/implementations/vector_stores/InMemoryVectorStore.js.map +1 -1
- package/dist/rag/reranking/index.d.ts +2 -2
- package/dist/rag/reranking/index.js +2 -2
- package/dist/rag/reranking/providers/index.d.ts +3 -2
- package/dist/rag/reranking/providers/index.d.ts.map +1 -1
- package/dist/rag/reranking/providers/index.js +3 -2
- package/dist/rag/reranking/providers/index.js.map +1 -1
- package/dist/social-posting/ContentAdaptationEngine.d.ts +148 -0
- package/dist/social-posting/ContentAdaptationEngine.d.ts.map +1 -0
- package/dist/social-posting/ContentAdaptationEngine.js +445 -0
- package/dist/social-posting/ContentAdaptationEngine.js.map +1 -0
- package/dist/social-posting/SocialAbstractService.d.ts +52 -0
- package/dist/social-posting/SocialAbstractService.d.ts.map +1 -0
- package/dist/social-posting/SocialAbstractService.js +127 -0
- package/dist/social-posting/SocialAbstractService.js.map +1 -0
- package/dist/social-posting/SocialPostManager.d.ts +252 -0
- package/dist/social-posting/SocialPostManager.d.ts.map +1 -0
- package/dist/social-posting/SocialPostManager.js +344 -0
- package/dist/social-posting/SocialPostManager.js.map +1 -0
- package/dist/social-posting/index.d.ts +12 -0
- package/dist/social-posting/index.d.ts.map +1 -0
- package/dist/social-posting/index.js +15 -0
- package/dist/social-posting/index.js.map +1 -0
- package/dist/voice/index.d.ts +2 -1
- package/dist/voice/index.d.ts.map +1 -1
- package/dist/voice/index.js +2 -1
- package/dist/voice/index.js.map +1 -1
- package/package.json +6 -3
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Social Post Manager — post lifecycle engine.
|
|
3
|
+
* @module @framers/agentos/social-posting/SocialPostManager
|
|
4
|
+
*
|
|
5
|
+
* Manages the full lifecycle of social media posts through a state machine:
|
|
6
|
+
*
|
|
7
|
+
* DRAFT --> SCHEDULED --> PUBLISHING --> PUBLISHED
|
|
8
|
+
* |
|
|
9
|
+
* ERROR --> RETRY --> PUBLISHING
|
|
10
|
+
*
|
|
11
|
+
* Storage is in-memory (Map<string, SocialPost>). The backend module will
|
|
12
|
+
* layer on DB persistence via IStorageAdapter when this is wired into
|
|
13
|
+
* the NestJS service layer.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { SocialPostManager } from '../social-posting/index.js';
|
|
18
|
+
*
|
|
19
|
+
* const manager = new SocialPostManager();
|
|
20
|
+
*
|
|
21
|
+
* const post = manager.createDraft({
|
|
22
|
+
* seedId: 'agent-alpha',
|
|
23
|
+
* content: 'Hello world!',
|
|
24
|
+
* platforms: ['twitter', 'bluesky'],
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* manager.schedulePost(post.id, '2026-03-05T12:00:00Z');
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
import { generateUUID } from '../utils/uuid.js';
|
|
31
|
+
// ============================================================================
|
|
32
|
+
// Constants
|
|
33
|
+
// ============================================================================
|
|
34
|
+
/** Default maximum number of retry attempts before a post is permanently failed. */
|
|
35
|
+
const DEFAULT_MAX_RETRIES = 3;
|
|
36
|
+
// ============================================================================
|
|
37
|
+
// Valid State Transitions
|
|
38
|
+
// ============================================================================
|
|
39
|
+
/**
|
|
40
|
+
* Allowed state transitions for the post lifecycle state machine.
|
|
41
|
+
* Each key maps to the set of states it may transition to.
|
|
42
|
+
*/
|
|
43
|
+
const VALID_TRANSITIONS = {
|
|
44
|
+
draft: ['scheduled', 'publishing'],
|
|
45
|
+
scheduled: ['publishing'],
|
|
46
|
+
publishing: ['published', 'error'],
|
|
47
|
+
published: [],
|
|
48
|
+
error: ['retry'],
|
|
49
|
+
retry: ['publishing'],
|
|
50
|
+
};
|
|
51
|
+
// ============================================================================
|
|
52
|
+
// SocialPostManager
|
|
53
|
+
// ============================================================================
|
|
54
|
+
/**
|
|
55
|
+
* Manages the lifecycle of social media posts.
|
|
56
|
+
*
|
|
57
|
+
* Provides create, schedule, publish, retry, and query operations over an
|
|
58
|
+
* in-memory store. Platform-specific publishing is delegated to callers
|
|
59
|
+
* (typically the ToolExecutor / skill layer) via the {@link publishNow}
|
|
60
|
+
* callback mechanism.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* const manager = new SocialPostManager();
|
|
65
|
+
* const draft = manager.createDraft({
|
|
66
|
+
* seedId: 'my-agent',
|
|
67
|
+
* content: 'Big announcement!',
|
|
68
|
+
* platforms: ['twitter', 'linkedin'],
|
|
69
|
+
* });
|
|
70
|
+
*
|
|
71
|
+
* // Schedule for later
|
|
72
|
+
* manager.schedulePost(draft.id, '2026-03-10T15:00:00Z');
|
|
73
|
+
*
|
|
74
|
+
* // Or publish immediately
|
|
75
|
+
* await manager.publishNow(draft.id);
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export class SocialPostManager {
|
|
79
|
+
constructor() {
|
|
80
|
+
/** In-memory post store keyed by post ID. */
|
|
81
|
+
this.posts = new Map();
|
|
82
|
+
}
|
|
83
|
+
// --------------------------------------------------------------------------
|
|
84
|
+
// Configuration
|
|
85
|
+
// --------------------------------------------------------------------------
|
|
86
|
+
/**
|
|
87
|
+
* Register a platform publish handler.
|
|
88
|
+
*
|
|
89
|
+
* The handler receives the full post and a single platform string and must
|
|
90
|
+
* return a {@link SocialPostPlatformResult}. It is called once per platform
|
|
91
|
+
* during {@link publishNow}.
|
|
92
|
+
*
|
|
93
|
+
* @param handler - Async function that publishes content to a platform
|
|
94
|
+
*/
|
|
95
|
+
setPublishHandler(handler) {
|
|
96
|
+
this.publishHandler = handler;
|
|
97
|
+
}
|
|
98
|
+
// --------------------------------------------------------------------------
|
|
99
|
+
// Lifecycle Operations
|
|
100
|
+
// --------------------------------------------------------------------------
|
|
101
|
+
/**
|
|
102
|
+
* Create a new draft post.
|
|
103
|
+
*
|
|
104
|
+
* If `input.schedule` is provided, the post is automatically transitioned
|
|
105
|
+
* to 'scheduled' status.
|
|
106
|
+
*
|
|
107
|
+
* @param input - Draft creation parameters
|
|
108
|
+
* @returns The newly created SocialPost in 'draft' (or 'scheduled') status
|
|
109
|
+
*/
|
|
110
|
+
createDraft(input) {
|
|
111
|
+
const now = new Date().toISOString();
|
|
112
|
+
const post = {
|
|
113
|
+
id: generateUUID(),
|
|
114
|
+
seedId: input.seedId,
|
|
115
|
+
baseContent: input.content,
|
|
116
|
+
adaptations: input.adaptations ?? {},
|
|
117
|
+
platforms: [...input.platforms],
|
|
118
|
+
mediaUrls: input.mediaUrls ? [...input.mediaUrls] : undefined,
|
|
119
|
+
scheduledAt: input.schedule,
|
|
120
|
+
status: input.schedule ? 'scheduled' : 'draft',
|
|
121
|
+
results: this.initPlatformResults(input.platforms),
|
|
122
|
+
retryCount: 0,
|
|
123
|
+
maxRetries: DEFAULT_MAX_RETRIES,
|
|
124
|
+
createdAt: now,
|
|
125
|
+
updatedAt: now,
|
|
126
|
+
};
|
|
127
|
+
this.posts.set(post.id, post);
|
|
128
|
+
return { ...post };
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Schedule a draft post for future publishing.
|
|
132
|
+
*
|
|
133
|
+
* @param postId - ID of the post to schedule
|
|
134
|
+
* @param timestamp - ISO 8601 timestamp for desired publish time
|
|
135
|
+
* @returns The updated SocialPost in 'scheduled' status
|
|
136
|
+
* @throws {Error} If the post is not found or the transition is invalid
|
|
137
|
+
*/
|
|
138
|
+
schedulePost(postId, timestamp) {
|
|
139
|
+
const post = this.requirePost(postId);
|
|
140
|
+
this.assertTransition(post.status, 'scheduled');
|
|
141
|
+
post.scheduledAt = timestamp;
|
|
142
|
+
post.status = 'scheduled';
|
|
143
|
+
post.updatedAt = new Date().toISOString();
|
|
144
|
+
return { ...post };
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Publish a post immediately.
|
|
148
|
+
*
|
|
149
|
+
* Transitions the post to 'publishing' and, if a publish handler is
|
|
150
|
+
* registered, invokes it for each target platform. After all platform
|
|
151
|
+
* results are collected, the post is transitioned to either 'published'
|
|
152
|
+
* (all succeeded) or 'error' (any failure).
|
|
153
|
+
*
|
|
154
|
+
* If no publish handler is registered, the post remains in 'publishing'
|
|
155
|
+
* status with all platform results set to 'pending'.
|
|
156
|
+
*
|
|
157
|
+
* @param postId - ID of the post to publish
|
|
158
|
+
* @returns The updated SocialPost after publish attempts
|
|
159
|
+
* @throws {Error} If the post is not found or the transition is invalid
|
|
160
|
+
*/
|
|
161
|
+
async publishNow(postId) {
|
|
162
|
+
const post = this.requirePost(postId);
|
|
163
|
+
this.assertTransition(post.status, 'publishing');
|
|
164
|
+
post.status = 'publishing';
|
|
165
|
+
post.updatedAt = new Date().toISOString();
|
|
166
|
+
if (!this.publishHandler) {
|
|
167
|
+
return { ...post };
|
|
168
|
+
}
|
|
169
|
+
// Publish to each platform concurrently
|
|
170
|
+
const platformResults = await Promise.allSettled(post.platforms.map(async (platform) => {
|
|
171
|
+
try {
|
|
172
|
+
const result = await this.publishHandler(post, platform);
|
|
173
|
+
post.results[platform] = result;
|
|
174
|
+
return result;
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
const errorResult = {
|
|
178
|
+
platform,
|
|
179
|
+
status: 'error',
|
|
180
|
+
error: err instanceof Error ? err.message : String(err),
|
|
181
|
+
};
|
|
182
|
+
post.results[platform] = errorResult;
|
|
183
|
+
return errorResult;
|
|
184
|
+
}
|
|
185
|
+
}));
|
|
186
|
+
// Determine aggregate status
|
|
187
|
+
const allResults = Object.values(post.results);
|
|
188
|
+
const hasError = allResults.some((r) => r.status === 'error');
|
|
189
|
+
const allSuccess = allResults.every((r) => r.status === 'success');
|
|
190
|
+
if (allSuccess) {
|
|
191
|
+
post.status = 'published';
|
|
192
|
+
}
|
|
193
|
+
else if (hasError) {
|
|
194
|
+
post.status = 'error';
|
|
195
|
+
}
|
|
196
|
+
post.updatedAt = new Date().toISOString();
|
|
197
|
+
return { ...post };
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Record a platform-specific publish result.
|
|
201
|
+
*
|
|
202
|
+
* Used by external publish handlers to report results asynchronously
|
|
203
|
+
* (e.g. webhook callbacks).
|
|
204
|
+
*
|
|
205
|
+
* @param postId - ID of the post
|
|
206
|
+
* @param platform - Platform identifier
|
|
207
|
+
* @param result - The platform result to record
|
|
208
|
+
* @returns The updated SocialPost
|
|
209
|
+
* @throws {Error} If the post is not found
|
|
210
|
+
*/
|
|
211
|
+
markPlatformResult(postId, platform, result) {
|
|
212
|
+
const post = this.requirePost(postId);
|
|
213
|
+
post.results[platform] = result;
|
|
214
|
+
// Auto-transition based on aggregate results
|
|
215
|
+
const allResults = Object.values(post.results);
|
|
216
|
+
const allSuccess = allResults.every((r) => r.status === 'success');
|
|
217
|
+
const hasError = allResults.some((r) => r.status === 'error');
|
|
218
|
+
const hasPending = allResults.some((r) => r.status === 'pending');
|
|
219
|
+
if (allSuccess && !hasPending) {
|
|
220
|
+
post.status = 'published';
|
|
221
|
+
}
|
|
222
|
+
else if (hasError && !hasPending) {
|
|
223
|
+
post.status = 'error';
|
|
224
|
+
}
|
|
225
|
+
post.updatedAt = new Date().toISOString();
|
|
226
|
+
return { ...post };
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Retry a failed post.
|
|
230
|
+
*
|
|
231
|
+
* Transitions the post from 'error' to 'retry', increments the retry
|
|
232
|
+
* counter, and resets failed platform results to 'pending'.
|
|
233
|
+
*
|
|
234
|
+
* @param postId - ID of the post to retry
|
|
235
|
+
* @returns The updated SocialPost in 'retry' status
|
|
236
|
+
* @throws {Error} If the post is not found, the transition is invalid,
|
|
237
|
+
* or the maximum retry count has been reached
|
|
238
|
+
*/
|
|
239
|
+
retryFailed(postId) {
|
|
240
|
+
const post = this.requirePost(postId);
|
|
241
|
+
this.assertTransition(post.status, 'retry');
|
|
242
|
+
if (post.retryCount >= post.maxRetries) {
|
|
243
|
+
throw new Error(`Post ${postId} has exceeded maximum retries (${post.maxRetries})`);
|
|
244
|
+
}
|
|
245
|
+
post.status = 'retry';
|
|
246
|
+
post.retryCount += 1;
|
|
247
|
+
post.updatedAt = new Date().toISOString();
|
|
248
|
+
// Reset failed platform results to pending for re-attempt
|
|
249
|
+
for (const platform of post.platforms) {
|
|
250
|
+
if (post.results[platform]?.status === 'error') {
|
|
251
|
+
post.results[platform] = {
|
|
252
|
+
platform,
|
|
253
|
+
status: 'pending',
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return { ...post };
|
|
258
|
+
}
|
|
259
|
+
// --------------------------------------------------------------------------
|
|
260
|
+
// Query Operations
|
|
261
|
+
// --------------------------------------------------------------------------
|
|
262
|
+
/**
|
|
263
|
+
* Retrieve a post by ID.
|
|
264
|
+
*
|
|
265
|
+
* @param postId - ID of the post to retrieve
|
|
266
|
+
* @returns The SocialPost if found, otherwise undefined
|
|
267
|
+
*/
|
|
268
|
+
getPost(postId) {
|
|
269
|
+
const post = this.posts.get(postId);
|
|
270
|
+
return post ? { ...post } : undefined;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* List posts with optional filtering by seed ID and/or status.
|
|
274
|
+
*
|
|
275
|
+
* @param seedId - Optional seed ID filter
|
|
276
|
+
* @param status - Optional status filter
|
|
277
|
+
* @returns Array of matching SocialPost objects
|
|
278
|
+
*/
|
|
279
|
+
listPosts(seedId, status) {
|
|
280
|
+
const results = [];
|
|
281
|
+
for (const post of this.posts.values()) {
|
|
282
|
+
if (seedId && post.seedId !== seedId)
|
|
283
|
+
continue;
|
|
284
|
+
if (status && post.status !== status)
|
|
285
|
+
continue;
|
|
286
|
+
results.push({ ...post });
|
|
287
|
+
}
|
|
288
|
+
return results;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Get all scheduled posts whose scheduledAt timestamp has passed.
|
|
292
|
+
*
|
|
293
|
+
* Used by a polling loop or scheduler to find posts that are due for
|
|
294
|
+
* publishing.
|
|
295
|
+
*
|
|
296
|
+
* @returns Array of SocialPost objects that are due for publishing
|
|
297
|
+
*/
|
|
298
|
+
getDuePosts() {
|
|
299
|
+
const now = new Date();
|
|
300
|
+
const results = [];
|
|
301
|
+
for (const post of this.posts.values()) {
|
|
302
|
+
if (post.status === 'scheduled' &&
|
|
303
|
+
post.scheduledAt &&
|
|
304
|
+
new Date(post.scheduledAt) <= now) {
|
|
305
|
+
results.push({ ...post });
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
return results;
|
|
309
|
+
}
|
|
310
|
+
// --------------------------------------------------------------------------
|
|
311
|
+
// Internal Helpers
|
|
312
|
+
// --------------------------------------------------------------------------
|
|
313
|
+
/**
|
|
314
|
+
* Retrieve a post or throw if not found.
|
|
315
|
+
*/
|
|
316
|
+
requirePost(postId) {
|
|
317
|
+
const post = this.posts.get(postId);
|
|
318
|
+
if (!post) {
|
|
319
|
+
throw new Error(`Social post not found: ${postId}`);
|
|
320
|
+
}
|
|
321
|
+
return post;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Assert that a state transition is valid.
|
|
325
|
+
*/
|
|
326
|
+
assertTransition(current, target) {
|
|
327
|
+
const allowed = VALID_TRANSITIONS[current];
|
|
328
|
+
if (!allowed || !allowed.includes(target)) {
|
|
329
|
+
throw new Error(`Invalid state transition: '${current}' --> '${target}'. ` +
|
|
330
|
+
`Allowed transitions from '${current}': [${(allowed ?? []).join(', ')}]`);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Initialize platform results with 'pending' status for each platform.
|
|
335
|
+
*/
|
|
336
|
+
initPlatformResults(platforms) {
|
|
337
|
+
const results = {};
|
|
338
|
+
for (const platform of platforms) {
|
|
339
|
+
results[platform] = { platform, status: 'pending' };
|
|
340
|
+
}
|
|
341
|
+
return results;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
//# sourceMappingURL=SocialPostManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SocialPostManager.js","sourceRoot":"","sources":["../../src/social-posting/SocialPostManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Social Posting module barrel exports.
|
|
3
|
+
*
|
|
4
|
+
* @module @framers/agentos/social-posting
|
|
5
|
+
*
|
|
6
|
+
* Provides the post lifecycle engine ({@link SocialPostManager}) and
|
|
7
|
+
* platform-aware content adaptation ({@link ContentAdaptationEngine}).
|
|
8
|
+
*/
|
|
9
|
+
export { SocialPostManager, type SocialPost, type SocialPostStatus, type SocialPostPlatformResult, type CreateDraftInput, } from './SocialPostManager';
|
|
10
|
+
export { ContentAdaptationEngine, type PlatformConstraints, type AdaptedContent, } from './ContentAdaptationEngine';
|
|
11
|
+
export { SocialAbstractService, type SocialRequestOptions, type SocialServiceConfig, } from './SocialAbstractService';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/social-posting/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,GACtB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,uBAAuB,EACvB,KAAK,mBAAmB,EACxB,KAAK,cAAc,GACpB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Social Posting module barrel exports.
|
|
3
|
+
*
|
|
4
|
+
* @module @framers/agentos/social-posting
|
|
5
|
+
*
|
|
6
|
+
* Provides the post lifecycle engine ({@link SocialPostManager}) and
|
|
7
|
+
* platform-aware content adaptation ({@link ContentAdaptationEngine}).
|
|
8
|
+
*/
|
|
9
|
+
// Post lifecycle state machine
|
|
10
|
+
export { SocialPostManager, } from './SocialPostManager.js';
|
|
11
|
+
// Platform-specific content adaptation
|
|
12
|
+
export { ContentAdaptationEngine, } from './ContentAdaptationEngine.js';
|
|
13
|
+
// Shared HTTP base class for channel service implementations
|
|
14
|
+
export { SocialAbstractService, } from './SocialAbstractService.js';
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/social-posting/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+BAA+B;AAC/B,OAAO,EACL,iBAAiB,GAKlB,MAAM,qBAAqB,CAAC;AAE7B,uCAAuC;AACvC,OAAO,EACL,uBAAuB,GAGxB,MAAM,2BAA2B,CAAC;AAEnC,6DAA6D;AAC7D,OAAO,EACL,qBAAqB,GAGtB,MAAM,yBAAyB,CAAC"}
|
package/dist/voice/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/voice/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/voice/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,SAAS,EACT,YAAY,GACb,MAAM,sBAAsB,CAAC"}
|
package/dist/voice/index.js
CHANGED
package/dist/voice/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/voice/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/voice/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAU3B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAM/C,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,SAAS,EACT,YAAY,GACb,MAAM,sBAAsB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@framers/agentos",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.53",
|
|
4
4
|
"description": "Modular AgentOS orchestration library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -154,8 +154,11 @@
|
|
|
154
154
|
"test": "vitest run",
|
|
155
155
|
"dev:test": "vitest",
|
|
156
156
|
"docs:clean": "rimraf docs/api ../../docs-generated/library ../../docs-generated/api",
|
|
157
|
-
"docs": "npm run docs:clean && pnpm --dir ../../ exec typedoc --options packages/agentos/typedoc.json && pnpm --dir ../../ exec typedoc --options typedoc.json &&
|
|
158
|
-
"docs:
|
|
157
|
+
"docs:library": "npm run docs:clean && pnpm --dir ../../ exec typedoc --options packages/agentos/typedoc.json && pnpm --dir ../../ exec typedoc --options packages/agentos/typedoc.modules.json && node scripts/generate-doc-search-index.mjs && pnpm --dir ../../ exec node apps/agentos.sh/scripts/copy-docs.js",
|
|
158
|
+
"docs:site-api": "pnpm --dir ../../ exec typedoc --options typedoc.json && pnpm --dir ../../ exec node scripts/generate-api-docs.js",
|
|
159
|
+
"docs": "npm run docs:library",
|
|
160
|
+
"docs:full": "npm run docs:library && npm run docs:site-api",
|
|
161
|
+
"docs:watch": "npm run docs:clean && pnpm --dir ../../ exec typedoc --options packages/agentos/typedoc.json && pnpm --dir ../../ exec typedoc --options packages/agentos/typedoc.modules.json && node scripts/generate-doc-search-index.mjs && pnpm --dir ../../ exec node apps/agentos.sh/scripts/copy-docs.js && concurrently \"pnpm --dir ../../ exec typedoc --options packages/agentos/typedoc.json --watch\" \"pnpm --dir ../../ exec typedoc --options packages/agentos/typedoc.modules.json --watch\" \"node scripts/generate-doc-search-index.mjs --watch\" \"pnpm --dir ../../ exec node apps/agentos.sh/scripts/copy-docs.js --watch\""
|
|
159
162
|
},
|
|
160
163
|
"keywords": [
|
|
161
164
|
"agentos",
|