@your-world/cli 0.1.5 → 0.1.7
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/adapters/claude-code-adapter.d.ts +16 -0
- package/dist/adapters/claude-code-adapter.js +106 -0
- package/dist/adapters/claude-code-adapter.js.map +1 -0
- package/dist/adapters/codex-adapter.d.ts +1 -0
- package/dist/adapters/codex-adapter.js +26 -12
- package/dist/adapters/codex-adapter.js.map +1 -1
- package/dist/adapters/external-agent-adapter.d.ts +4 -0
- package/dist/adapters/external-agent-adapter.js +13 -0
- package/dist/adapters/external-agent-adapter.js.map +1 -1
- package/dist/cli/action-submit.js +47 -14
- package/dist/cli/action-submit.js.map +1 -1
- package/dist/cli/agent-adapter-discovery.d.ts +10 -0
- package/dist/cli/agent-adapter-discovery.js +116 -0
- package/dist/cli/agent-adapter-discovery.js.map +1 -0
- package/dist/cli/bin.js +51 -14
- package/dist/cli/bin.js.map +1 -1
- package/dist/cli/catalog.js +11 -6
- package/dist/cli/catalog.js.map +1 -1
- package/dist/cli/observe.js +14 -1
- package/dist/cli/observe.js.map +1 -1
- package/dist/cli/play-goal.d.ts +2 -0
- package/dist/cli/play-goal.js +34 -0
- package/dist/cli/play-goal.js.map +1 -0
- package/dist/cli/play-init.d.ts +7 -0
- package/dist/cli/play-init.js +45 -9
- package/dist/cli/play-init.js.map +1 -1
- package/dist/cli/play-run.js +8 -3
- package/dist/cli/play-run.js.map +1 -1
- package/dist/cli/player-init.js +1 -1
- package/dist/cli/player-init.js.map +1 -1
- package/dist/cli/rules.js +16 -6
- package/dist/cli/rules.js.map +1 -1
- package/dist/cli/shared.js +31 -16
- package/dist/cli/shared.js.map +1 -1
- package/dist/config/credential-store.js +6 -3
- package/dist/config/credential-store.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/optional-prop.d.ts +1 -0
- package/dist/optional-prop.js +12 -0
- package/dist/optional-prop.js.map +1 -0
- package/dist/prompting/agents-template.d.ts +1 -0
- package/dist/prompting/agents-template.js +40 -2
- package/dist/prompting/agents-template.js.map +1 -1
- package/dist/prompting/turn-summary.js +55 -3
- package/dist/prompting/turn-summary.js.map +1 -1
- package/dist/runtime/player-runtime.d.ts +2 -2
- package/dist/runtime/player-runtime.js +96 -39
- package/dist/runtime/player-runtime.js.map +1 -1
- package/dist/runtime/session-store.d.ts +3 -0
- package/dist/runtime/session-store.js +12 -2
- package/dist/runtime/session-store.js.map +1 -1
- package/dist/runtime/settlement-sync.js +80 -18
- package/dist/runtime/settlement-sync.js.map +1 -1
- package/dist/runtime/turn-orchestrator.js +3 -2
- package/dist/runtime/turn-orchestrator.js.map +1 -1
- package/dist/runtime/workspace-manager.d.ts +6 -0
- package/dist/runtime/workspace-manager.js +58 -5
- package/dist/runtime/workspace-manager.js.map +1 -1
- package/dist/types.d.ts +137 -40
- package/dist/world-client.d.ts +6 -6
- package/dist/world-client.js +24 -14
- package/dist/world-client.js.map +1 -1
- package/package.json +4 -2
- package/dist/adapters/generic-command-adapter.d.ts +0 -12
- package/dist/adapters/generic-command-adapter.js +0 -58
- package/dist/adapters/generic-command-adapter.js.map +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TurnOrchestrator = void 0;
|
|
4
|
+
const optional_prop_1 = require("../optional-prop");
|
|
4
5
|
class TurnOrchestrator {
|
|
5
6
|
store;
|
|
6
7
|
client;
|
|
@@ -25,14 +26,14 @@ class TurnOrchestrator {
|
|
|
25
26
|
goal: session.goal,
|
|
26
27
|
agentId: session.agentId,
|
|
27
28
|
serverUrl: session.serverUrl,
|
|
28
|
-
tickIntervalMs
|
|
29
|
+
...(0, optional_prop_1.optionalProp)('tickIntervalMs', session.tickPollIntervalMs),
|
|
29
30
|
observeSummary: sanitizeObserveSummary(tickInbox.observe),
|
|
30
31
|
recentEvents: sanitizeRecentEvents(tickInbox.events),
|
|
31
32
|
lastAction,
|
|
32
33
|
lastSettlement,
|
|
33
34
|
submissionState: {
|
|
34
35
|
hasSubmitted: session.runState === 'submitted',
|
|
35
|
-
activeRunId
|
|
36
|
+
...(0, optional_prop_1.optionalProp)('activeRunId', session.activeRunId),
|
|
36
37
|
runState: session.runState,
|
|
37
38
|
},
|
|
38
39
|
latestObservedTickAtStart: session.latestObservedTick,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn-orchestrator.js","sourceRoot":"","sources":["../../src/runtime/turn-orchestrator.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"turn-orchestrator.js","sourceRoot":"","sources":["../../src/runtime/turn-orchestrator.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAKhD,MAAa,gBAAgB;IAEJ;IACA;IAFrB,YACqB,KAAmB,EACnB,MAAuB;QADvB,UAAK,GAAL,KAAK,CAAc;QACnB,WAAM,GAAN,MAAM,CAAiB;IACzC,CAAC;IAEJ,KAAK,CAAC,YAAY,CAAC,IAAY;QAC3B,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7H,OAAO;YACH,IAAI;YACJ,OAAO;YACP,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACvC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAA6B,EAAE,KAAa,EAAE,SAA0B;QAC5F,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QAEvH,OAAO;YACH,KAAK;YACL,WAAW,EAAE,SAAS,CAAC,IAAI;YAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,GAAG,IAAA,4BAAY,EAAC,gBAAgB,EAAE,OAAO,CAAC,kBAAkB,CAAC;YAC7D,cAAc,EAAE,sBAAsB,CAAC,SAAS,CAAC,OAAO,CAAC;YACzD,YAAY,EAAE,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC;YACpD,UAAU;YACV,cAAc;YACd,eAAe,EAAE;gBACb,YAAY,EAAE,OAAO,CAAC,QAAQ,KAAK,WAAW;gBAC9C,GAAG,IAAA,4BAAY,EAAC,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC;gBACnD,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC7B;YACD,yBAAyB,EAAE,OAAO,CAAC,kBAAkB;SACxD,CAAC;IACN,CAAC;CACJ;AAvCD,4CAuCC;AAED,SAAS,sBAAsB,CAAC,OAAmC;IAC/D,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAE7D,OAAO;QACH,GAAG,IAAI;QACP,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnF,CAAC;AACN,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAsE;IAC/F,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC7C,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAiC;IAC3D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AACtI,CAAC"}
|
|
@@ -6,4 +6,10 @@ export declare class WorkspaceManager {
|
|
|
6
6
|
ensureWorkspace(session: PlayerRuntimeSession): Promise<void>;
|
|
7
7
|
writeInbox(record: TickInboxRecord): Promise<void>;
|
|
8
8
|
writeTurn(runId: string, snapshot: TurnSnapshot): Promise<void>;
|
|
9
|
+
syncGoal(session: PlayerRuntimeSession): Promise<{
|
|
10
|
+
agentsUpdated: boolean;
|
|
11
|
+
activeRunUpdated: boolean;
|
|
12
|
+
}>;
|
|
13
|
+
private syncAgentsGoal;
|
|
14
|
+
private syncActiveRunGoal;
|
|
9
15
|
}
|
|
@@ -11,11 +11,16 @@ class WorkspaceManager {
|
|
|
11
11
|
}
|
|
12
12
|
async ensureWorkspace(session) {
|
|
13
13
|
await this.store.ensureWorkspace();
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
const instructionFilePath = this.store.instructionFilePath(session.adapter);
|
|
15
|
+
if (!(await fileExists(instructionFilePath))) {
|
|
16
|
+
await (0, promises_1.writeFile)(instructionFilePath, (0, agents_template_1.renderAgentsTemplate)({
|
|
17
|
+
profile: session.profile,
|
|
18
|
+
goal: session.goal,
|
|
19
|
+
workDir: session.workDir,
|
|
20
|
+
}), 'utf8');
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
await this.syncGoal(session);
|
|
19
24
|
}
|
|
20
25
|
async writeInbox(record) {
|
|
21
26
|
await this.store.writeInboxTick(record);
|
|
@@ -23,6 +28,54 @@ class WorkspaceManager {
|
|
|
23
28
|
async writeTurn(runId, snapshot) {
|
|
24
29
|
await this.store.writeTurnSnapshot(runId, snapshot, (0, turn_summary_1.renderTurnSummary)(snapshot));
|
|
25
30
|
}
|
|
31
|
+
async syncGoal(session) {
|
|
32
|
+
await this.store.ensureWorkspace();
|
|
33
|
+
const agentsUpdated = await this.syncAgentsGoal(session);
|
|
34
|
+
const activeRunUpdated = session.activeRunId ? await this.syncActiveRunGoal(session.activeRunId, session.goal) : false;
|
|
35
|
+
return {
|
|
36
|
+
agentsUpdated,
|
|
37
|
+
activeRunUpdated,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
async syncAgentsGoal(session) {
|
|
41
|
+
const instructionFilePath = this.store.instructionFilePath(session.adapter);
|
|
42
|
+
if (!(await fileExists(instructionFilePath))) {
|
|
43
|
+
await (0, promises_1.writeFile)(instructionFilePath, (0, agents_template_1.renderAgentsTemplate)({
|
|
44
|
+
profile: session.profile,
|
|
45
|
+
goal: session.goal,
|
|
46
|
+
workDir: session.workDir,
|
|
47
|
+
}), 'utf8');
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
const existing = await (0, promises_1.readFile)(instructionFilePath, 'utf8');
|
|
51
|
+
const next = (0, agents_template_1.syncGoalInAgentsTemplate)(existing, session.goal);
|
|
52
|
+
if (next === null || next === existing) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
await (0, promises_1.writeFile)(instructionFilePath, next, 'utf8');
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
async syncActiveRunGoal(runId, goal) {
|
|
59
|
+
const snapshot = await this.store.readTurnSnapshot(runId);
|
|
60
|
+
if (!snapshot || snapshot.goal === goal) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
const nextSnapshot = {
|
|
64
|
+
...snapshot,
|
|
65
|
+
goal,
|
|
66
|
+
};
|
|
67
|
+
await this.store.writeTurnSnapshot(runId, nextSnapshot, (0, turn_summary_1.renderTurnSummary)(nextSnapshot));
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
26
70
|
}
|
|
27
71
|
exports.WorkspaceManager = WorkspaceManager;
|
|
72
|
+
async function fileExists(filePath) {
|
|
73
|
+
try {
|
|
74
|
+
await (0, promises_1.access)(filePath);
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
28
81
|
//# sourceMappingURL=workspace-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-manager.js","sourceRoot":"","sources":["../../src/runtime/workspace-manager.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"workspace-manager.js","sourceRoot":"","sources":["../../src/runtime/workspace-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
verb: string;
|
|
4
|
-
target?: string | number | Record<string, unknown>;
|
|
5
|
-
params?: Record<string, unknown>;
|
|
6
|
-
reason?: string;
|
|
7
|
-
}
|
|
8
|
-
export interface ActRequest extends Action {
|
|
9
|
-
basedOnTick?: number;
|
|
10
|
-
intendedStartTick?: number;
|
|
11
|
-
}
|
|
1
|
+
import type { Action, ActRequest, ActResponse, WorldEvent } from '@your-world/common';
|
|
2
|
+
export type { Action, ActRequest, ActResponse, WorldEvent } from '@your-world/common';
|
|
12
3
|
export interface InventoryItem {
|
|
13
4
|
itemId: string;
|
|
14
5
|
amount: number;
|
|
@@ -33,14 +24,82 @@ export interface NearbyResource {
|
|
|
33
24
|
}
|
|
34
25
|
export interface NearbyStructure {
|
|
35
26
|
structureId: string;
|
|
36
|
-
|
|
27
|
+
structureTypeId?: string;
|
|
28
|
+
origin?: {
|
|
29
|
+
x: number;
|
|
30
|
+
y: number;
|
|
31
|
+
};
|
|
32
|
+
footprint?: {
|
|
33
|
+
width: number;
|
|
34
|
+
height: number;
|
|
35
|
+
};
|
|
37
36
|
position?: {
|
|
38
37
|
x: number;
|
|
39
38
|
y: number;
|
|
40
39
|
};
|
|
41
40
|
hp?: number;
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
state?: {
|
|
42
|
+
kind: 'static';
|
|
43
|
+
} | {
|
|
44
|
+
kind: 'gate';
|
|
45
|
+
open: boolean;
|
|
46
|
+
};
|
|
47
|
+
sourceBuildRecipeId?: string;
|
|
48
|
+
builderAgentId?: string;
|
|
49
|
+
ownerRef?: {
|
|
50
|
+
kind: 'agent';
|
|
51
|
+
agentId: string;
|
|
52
|
+
} | {
|
|
53
|
+
kind: 'organization';
|
|
54
|
+
organizationId: string;
|
|
55
|
+
};
|
|
56
|
+
withdrawLevel?: 'owner' | 'organization' | 'public';
|
|
57
|
+
canWithdraw?: boolean;
|
|
58
|
+
distance?: number;
|
|
59
|
+
}
|
|
60
|
+
export interface FactoryView {
|
|
61
|
+
factoryId: string;
|
|
62
|
+
ownerRef?: {
|
|
63
|
+
kind: 'agent';
|
|
64
|
+
agentId: string;
|
|
65
|
+
} | {
|
|
66
|
+
kind: 'organization';
|
|
67
|
+
organizationId: string;
|
|
68
|
+
};
|
|
69
|
+
structureTypeId?: string;
|
|
70
|
+
activeRecipeId?: string;
|
|
71
|
+
activeContractDefinitionIds?: string[];
|
|
72
|
+
minWorkersToRun?: number;
|
|
73
|
+
maxWorkers?: number;
|
|
74
|
+
assignedWorkerCount?: number;
|
|
75
|
+
maxRunsPerTick?: number;
|
|
76
|
+
storageCapacityGrams?: number;
|
|
77
|
+
storageUsedGrams?: number;
|
|
78
|
+
inventorySummary?: InventoryItem[];
|
|
79
|
+
availableRecipeIds?: string[];
|
|
80
|
+
lastTickRuns?: number;
|
|
81
|
+
canConfigure?: boolean;
|
|
82
|
+
joinedByViewer?: boolean;
|
|
83
|
+
}
|
|
84
|
+
export interface NearbyProject {
|
|
85
|
+
projectId: string;
|
|
86
|
+
recipeId?: string;
|
|
87
|
+
targetStructureTypeId?: string;
|
|
88
|
+
builderAgentId?: string;
|
|
89
|
+
origin?: {
|
|
90
|
+
x: number;
|
|
91
|
+
y: number;
|
|
92
|
+
};
|
|
93
|
+
footprint?: {
|
|
94
|
+
width: number;
|
|
95
|
+
height: number;
|
|
96
|
+
};
|
|
97
|
+
stage?: 'frame' | 'supplied';
|
|
98
|
+
deliveredInputs?: InventoryItem[];
|
|
99
|
+
requiredInputs?: InventoryItem[];
|
|
100
|
+
currentWork?: number;
|
|
101
|
+
requiredWork?: number;
|
|
102
|
+
reservedUntilTick?: number;
|
|
44
103
|
distance?: number;
|
|
45
104
|
}
|
|
46
105
|
export interface NearbyAgent {
|
|
@@ -63,7 +122,7 @@ export interface VisibleTrade {
|
|
|
63
122
|
tradeId: string;
|
|
64
123
|
creatorAgentId: string;
|
|
65
124
|
toAgentId?: string;
|
|
66
|
-
status?:
|
|
125
|
+
status?: string;
|
|
67
126
|
createdAtTick?: number;
|
|
68
127
|
expiresAtTick?: number;
|
|
69
128
|
ticksUntilExpire?: number;
|
|
@@ -73,8 +132,57 @@ export interface VisibleTrade {
|
|
|
73
132
|
canCancel?: boolean;
|
|
74
133
|
acceptRequirementsMet?: boolean;
|
|
75
134
|
}
|
|
135
|
+
export interface ObserveTargetingQuery {
|
|
136
|
+
archetype?: string;
|
|
137
|
+
resource?: string;
|
|
138
|
+
}
|
|
139
|
+
export interface ObserveResourceHint {
|
|
140
|
+
resourceId: string;
|
|
141
|
+
resourceTypeId?: string;
|
|
142
|
+
nodeArchetypeId?: string;
|
|
143
|
+
itemId?: string;
|
|
144
|
+
position?: {
|
|
145
|
+
x: number;
|
|
146
|
+
y: number;
|
|
147
|
+
};
|
|
148
|
+
amount?: number;
|
|
149
|
+
distance?: number;
|
|
150
|
+
}
|
|
151
|
+
export type ObserveArchetypeHint = {
|
|
152
|
+
kind: 'structure';
|
|
153
|
+
archetypeId: string;
|
|
154
|
+
structureId: string;
|
|
155
|
+
structureTypeId?: string;
|
|
156
|
+
origin?: {
|
|
157
|
+
x: number;
|
|
158
|
+
y: number;
|
|
159
|
+
};
|
|
160
|
+
footprint?: {
|
|
161
|
+
width: number;
|
|
162
|
+
height: number;
|
|
163
|
+
};
|
|
164
|
+
position?: {
|
|
165
|
+
x: number;
|
|
166
|
+
y: number;
|
|
167
|
+
};
|
|
168
|
+
distance?: number;
|
|
169
|
+
} | {
|
|
170
|
+
kind: 'resource';
|
|
171
|
+
archetypeId: string;
|
|
172
|
+
resourceId: string;
|
|
173
|
+
resourceTypeId?: string;
|
|
174
|
+
nodeArchetypeId?: string;
|
|
175
|
+
itemId?: string;
|
|
176
|
+
position?: {
|
|
177
|
+
x: number;
|
|
178
|
+
y: number;
|
|
179
|
+
};
|
|
180
|
+
amount?: number;
|
|
181
|
+
distance?: number;
|
|
182
|
+
};
|
|
76
183
|
export interface ObserveResponse {
|
|
77
184
|
tick: number;
|
|
185
|
+
agentId?: string;
|
|
78
186
|
map?: {
|
|
79
187
|
width: number;
|
|
80
188
|
height: number;
|
|
@@ -86,6 +194,10 @@ export interface ObserveResponse {
|
|
|
86
194
|
hunger?: number;
|
|
87
195
|
stamina?: number;
|
|
88
196
|
inventory?: InventoryItem[];
|
|
197
|
+
carryWeightGrams?: number;
|
|
198
|
+
carryLimitGrams?: number;
|
|
199
|
+
carryRemainingGrams?: number;
|
|
200
|
+
joinedFactoryId?: string;
|
|
89
201
|
talents?: Record<string, {
|
|
90
202
|
baseLevel: number;
|
|
91
203
|
level: number;
|
|
@@ -94,7 +206,9 @@ export interface ObserveResponse {
|
|
|
94
206
|
}>;
|
|
95
207
|
nearbyResources?: NearbyResource[];
|
|
96
208
|
nearbyStructures?: NearbyStructure[];
|
|
209
|
+
nearbyProjects?: NearbyProject[];
|
|
97
210
|
nearbyAgents?: NearbyAgent[];
|
|
211
|
+
factories?: FactoryView[];
|
|
98
212
|
visibleTrades?: VisibleTrade[];
|
|
99
213
|
adjacentTiles?: Array<{
|
|
100
214
|
x: number;
|
|
@@ -102,9 +216,9 @@ export interface ObserveResponse {
|
|
|
102
216
|
withinMap: boolean;
|
|
103
217
|
terrain?: string;
|
|
104
218
|
occupiedBy?: {
|
|
105
|
-
kind: 'resource' | 'structure' | 'agent';
|
|
219
|
+
kind: 'resource' | 'crop' | 'structure' | 'project' | 'agent';
|
|
106
220
|
id: string;
|
|
107
|
-
|
|
221
|
+
typeId?: string;
|
|
108
222
|
};
|
|
109
223
|
canMove: boolean;
|
|
110
224
|
canBuild: boolean;
|
|
@@ -113,6 +227,8 @@ export interface ObserveResponse {
|
|
|
113
227
|
x: number;
|
|
114
228
|
y: number;
|
|
115
229
|
}>;
|
|
230
|
+
resourceHints?: ObserveResourceHint[];
|
|
231
|
+
archetypeHints?: ObserveArchetypeHint[];
|
|
116
232
|
[key: string]: unknown;
|
|
117
233
|
}
|
|
118
234
|
export interface TickSignal {
|
|
@@ -152,25 +268,6 @@ export interface PlayerAgentCreateResponse {
|
|
|
152
268
|
agentId: string;
|
|
153
269
|
agentToken: string;
|
|
154
270
|
}
|
|
155
|
-
export interface ActResponse {
|
|
156
|
-
accepted?: boolean;
|
|
157
|
-
reason?: string;
|
|
158
|
-
startTick?: number;
|
|
159
|
-
duplicate?: boolean;
|
|
160
|
-
currentTick?: number;
|
|
161
|
-
basedOnTick?: number;
|
|
162
|
-
intendedStartTick?: number;
|
|
163
|
-
lateSubmission?: boolean;
|
|
164
|
-
[key: string]: unknown;
|
|
165
|
-
}
|
|
166
|
-
export interface WorldEvent {
|
|
167
|
-
eventId: string;
|
|
168
|
-
tick: number;
|
|
169
|
-
type: string;
|
|
170
|
-
actorId?: string;
|
|
171
|
-
actionId?: string;
|
|
172
|
-
data: Record<string, unknown>;
|
|
173
|
-
}
|
|
174
271
|
export interface EventQueryResult {
|
|
175
272
|
events: WorldEvent[];
|
|
176
273
|
nextCursor: number;
|
|
@@ -246,11 +343,11 @@ export interface TickContext {
|
|
|
246
343
|
readonly tools: AgentTools;
|
|
247
344
|
observe(): Promise<ObserveResponse>;
|
|
248
345
|
remember(key: string, value: unknown): void;
|
|
249
|
-
recall
|
|
346
|
+
recall(key: string): unknown;
|
|
250
347
|
hasCommitted(): boolean;
|
|
251
348
|
commit(action: Action): Promise<void>;
|
|
252
349
|
}
|
|
253
|
-
export type Policy = (context: TickContext) => Promise<Action | null |
|
|
350
|
+
export type Policy = (context: TickContext) => Promise<Action | null | undefined> | Action | null | undefined;
|
|
254
351
|
export interface TickRunnerOptions {
|
|
255
352
|
client: WorldClientLike;
|
|
256
353
|
policy: Policy;
|
|
@@ -259,11 +356,11 @@ export interface TickRunnerOptions {
|
|
|
259
356
|
pollIntervalMs?: number;
|
|
260
357
|
}
|
|
261
358
|
export interface WorldClientLike {
|
|
262
|
-
readonly agentId
|
|
359
|
+
readonly agentId: string | undefined;
|
|
263
360
|
playerInit(input: PlayerInitRequest): Promise<PlayerInitResponse>;
|
|
264
361
|
createPlayerAgent(playerCredential: string, input: PlayerAgentCreateRequest): Promise<PlayerAgentCreateResponse>;
|
|
265
362
|
join(input?: JoinRequest): Promise<JoinResponse>;
|
|
266
|
-
observe(asOfTick?: number): Promise<ObserveResponse>;
|
|
363
|
+
observe(asOfTick?: number, targeting?: ObserveTargetingQuery): Promise<ObserveResponse>;
|
|
267
364
|
act(action: ActRequest): Promise<ActResponse>;
|
|
268
365
|
getTickInfo(): Promise<TickInfoResponse>;
|
|
269
366
|
getCatalog(params: ToolQuery, options?: ConditionalRequestOptions): Promise<ToolReadResponse<unknown>>;
|
package/dist/world-client.d.ts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { ActRequest, ActResponse, ConditionalRequestOptions, EventQueryResult, JoinRequest, JoinResponse, ObserveResponse, PlayerAgentCreateRequest, PlayerAgentCreateResponse, PlayerInitRequest, PlayerInitResponse, TickInfoResponse, TickSignal, ToolQuery, ToolReadResponse, WorldClientOptions } from './types';
|
|
1
|
+
import { ActRequest, ActResponse, ConditionalRequestOptions, EventQueryResult, JoinRequest, JoinResponse, ObserveResponse, ObserveTargetingQuery, PlayerAgentCreateRequest, PlayerAgentCreateResponse, PlayerInitRequest, PlayerInitResponse, TickInfoResponse, TickSignal, ToolQuery, ToolReadResponse, WorldClientOptions } from './types';
|
|
2
2
|
export declare class WorldClientError extends Error {
|
|
3
3
|
readonly status: number;
|
|
4
|
-
readonly code
|
|
5
|
-
readonly details
|
|
4
|
+
readonly code: string | undefined;
|
|
5
|
+
readonly details: unknown;
|
|
6
6
|
constructor(message: string, status: number, code?: string, details?: unknown);
|
|
7
7
|
}
|
|
8
8
|
export declare class WorldClient {
|
|
9
9
|
private readonly baseUrl;
|
|
10
|
-
private readonly token
|
|
10
|
+
private readonly token;
|
|
11
11
|
private readonly fetchImpl;
|
|
12
12
|
private readonly routes;
|
|
13
|
-
private _agentId
|
|
13
|
+
private _agentId;
|
|
14
14
|
constructor(options: WorldClientOptions);
|
|
15
15
|
get agentId(): string | undefined;
|
|
16
16
|
playerInit(input: PlayerInitRequest): Promise<PlayerInitResponse>;
|
|
17
17
|
createPlayerAgent(playerCredential: string, input: PlayerAgentCreateRequest): Promise<PlayerAgentCreateResponse>;
|
|
18
18
|
join(input?: JoinRequest): Promise<JoinResponse>;
|
|
19
|
-
observe(asOfTick?: number): Promise<ObserveResponse>;
|
|
19
|
+
observe(asOfTick?: number, targeting?: ObserveTargetingQuery): Promise<ObserveResponse>;
|
|
20
20
|
act(action: ActRequest): Promise<ActResponse>;
|
|
21
21
|
getTickInfo(): Promise<TickInfoResponse>;
|
|
22
22
|
getCatalog(params: ToolQuery, options?: ConditionalRequestOptions): Promise<ToolReadResponse<unknown>>;
|
package/dist/world-client.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WorldClient = exports.WorldClientError = void 0;
|
|
4
|
+
const common_1 = require("@your-world/common");
|
|
5
|
+
const optional_prop_1 = require("./optional-prop");
|
|
4
6
|
const DEFAULT_ROUTES = {
|
|
5
7
|
playerInit: '/player/init',
|
|
6
8
|
playerAgents: '/player/agents',
|
|
@@ -55,16 +57,21 @@ class WorldClient {
|
|
|
55
57
|
}
|
|
56
58
|
async join(input = {}) {
|
|
57
59
|
const payload = {
|
|
58
|
-
...
|
|
59
|
-
|
|
60
|
+
...(() => {
|
|
61
|
+
const { agentId: _agentId, ...rest } = input;
|
|
62
|
+
return rest;
|
|
63
|
+
})(),
|
|
64
|
+
...(0, optional_prop_1.optionalProp)('agentId', input.agentId ?? this._agentId),
|
|
60
65
|
};
|
|
61
66
|
const response = await this.request('POST', this.routes.join, payload);
|
|
62
67
|
this._agentId = response.agentId;
|
|
63
68
|
return response;
|
|
64
69
|
}
|
|
65
|
-
observe(asOfTick) {
|
|
70
|
+
observe(asOfTick, targeting = {}) {
|
|
66
71
|
return this.request('GET', this.routes.observe, undefined, {
|
|
67
|
-
asOfTick,
|
|
72
|
+
...(0, optional_prop_1.optionalProp)('asOfTick', asOfTick),
|
|
73
|
+
...(0, optional_prop_1.optionalProp)('archetype', targeting.archetype),
|
|
74
|
+
...(0, optional_prop_1.optionalProp)('resource', targeting.resource),
|
|
68
75
|
});
|
|
69
76
|
}
|
|
70
77
|
act(action) {
|
|
@@ -91,7 +98,7 @@ class WorldClient {
|
|
|
91
98
|
});
|
|
92
99
|
}
|
|
93
100
|
async waitForNextTick(afterTick, pollIntervalMs = 1000, signal) {
|
|
94
|
-
|
|
101
|
+
for (;;) {
|
|
95
102
|
if (signal?.aborted) {
|
|
96
103
|
throw new Error('Aborted while waiting for next tick.');
|
|
97
104
|
}
|
|
@@ -115,10 +122,13 @@ class WorldClient {
|
|
|
115
122
|
}
|
|
116
123
|
async request(method, path, body, query, headers) {
|
|
117
124
|
const response = await this.requestRaw(method, path, body, {
|
|
118
|
-
query,
|
|
119
|
-
headers,
|
|
125
|
+
...(0, optional_prop_1.optionalProp)('query', query),
|
|
126
|
+
...(0, optional_prop_1.optionalProp)('headers', headers),
|
|
120
127
|
});
|
|
121
|
-
|
|
128
|
+
if (response.payload === undefined) {
|
|
129
|
+
throw new WorldClientError(`Request succeeded without a JSON response body: ${path}`, response.status, 'EMPTY_RESPONSE');
|
|
130
|
+
}
|
|
131
|
+
return response.payload;
|
|
122
132
|
}
|
|
123
133
|
async conditionalRead(path, params, options) {
|
|
124
134
|
const query = { ...params };
|
|
@@ -136,9 +146,9 @@ class WorldClient {
|
|
|
136
146
|
});
|
|
137
147
|
return {
|
|
138
148
|
status: response.status,
|
|
139
|
-
etag
|
|
140
|
-
version
|
|
141
|
-
body
|
|
149
|
+
...(0, optional_prop_1.optionalProp)('etag', response.headers.get('etag') ?? undefined),
|
|
150
|
+
...(0, optional_prop_1.optionalProp)('version', response.headers.get('x-version') ?? undefined),
|
|
151
|
+
...(0, optional_prop_1.optionalProp)('body', response.payload),
|
|
142
152
|
};
|
|
143
153
|
}
|
|
144
154
|
async requestRaw(method, path, body, options = {}) {
|
|
@@ -158,14 +168,14 @@ class WorldClient {
|
|
|
158
168
|
const response = await this.fetchImpl(url, {
|
|
159
169
|
method,
|
|
160
170
|
headers,
|
|
161
|
-
body
|
|
171
|
+
...(body === undefined ? {} : { body: JSON.stringify(body) }),
|
|
162
172
|
});
|
|
163
173
|
const text = await response.text();
|
|
164
174
|
const payload = text.length > 0 ? safeParseJson(text) : undefined;
|
|
165
175
|
const allowedStatus = options.allowStatuses?.includes(response.status) ?? false;
|
|
166
176
|
if (!response.ok && !allowedStatus) {
|
|
167
177
|
const errorPayload = isRecord(payload) ? payload : {};
|
|
168
|
-
const message = (typeof errorPayload.message === 'string' && errorPayload.message) || `Request failed: ${response.status}`;
|
|
178
|
+
const message = (typeof errorPayload.message === 'string' && errorPayload.message) || `Request failed: ${String(response.status)}`;
|
|
169
179
|
throw new WorldClientError(message, response.status, typeof errorPayload.code === 'string' ? errorPayload.code : undefined, errorPayload.details);
|
|
170
180
|
}
|
|
171
181
|
return {
|
|
@@ -194,7 +204,7 @@ function stripTrailingSlash(input) {
|
|
|
194
204
|
}
|
|
195
205
|
function safeParseJson(raw) {
|
|
196
206
|
try {
|
|
197
|
-
return
|
|
207
|
+
return (0, common_1.parseJsonValue)(raw, 'HTTP response body');
|
|
198
208
|
}
|
|
199
209
|
catch {
|
|
200
210
|
return raw;
|
package/dist/world-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world-client.js","sourceRoot":"","sources":["../src/world-client.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"world-client.js","sourceRoot":"","sources":["../src/world-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@your-world/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "YourWorld command line interface.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Your World",
|
|
@@ -34,11 +34,13 @@
|
|
|
34
34
|
"node": ">=20"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
+
"@your-world/common": "0.1.0",
|
|
37
38
|
"commander": "^14.0.1"
|
|
38
39
|
},
|
|
39
40
|
"scripts": {
|
|
40
|
-
"build": "node -e \"require('node:fs').rmSync('dist', { recursive: true
|
|
41
|
+
"build": "node -e \"const fs = require('node:fs'); if (fs.existsSync('dist')) { fs.rmSync('dist', { recursive: true }); }\" && tsc -p tsconfig.build.json",
|
|
41
42
|
"lint": "eslint src",
|
|
43
|
+
"typecheck": "tsc -p tsconfig.json",
|
|
42
44
|
"prepack": "npm run build",
|
|
43
45
|
"test": "node --import tsx --test src/**/*.test.ts",
|
|
44
46
|
"yw": "tsx src/cli/bin.ts"
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { ExternalAgentAdapter, PreparedSession, PrepareSessionInput, RunningTurn, RunTurnInput } from './external-agent-adapter';
|
|
2
|
-
export interface GenericCommandAdapterOptions {
|
|
3
|
-
name?: string;
|
|
4
|
-
command: string[];
|
|
5
|
-
}
|
|
6
|
-
export declare class GenericCommandAdapter implements ExternalAgentAdapter {
|
|
7
|
-
readonly name: string;
|
|
8
|
-
private readonly command;
|
|
9
|
-
constructor(options: GenericCommandAdapterOptions);
|
|
10
|
-
prepareSession(_input: PrepareSessionInput): Promise<PreparedSession>;
|
|
11
|
-
runTurn(input: RunTurnInput): Promise<RunningTurn>;
|
|
12
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GenericCommandAdapter = void 0;
|
|
4
|
-
const node_child_process_1 = require("node:child_process");
|
|
5
|
-
class GenericCommandAdapter {
|
|
6
|
-
name;
|
|
7
|
-
command;
|
|
8
|
-
constructor(options) {
|
|
9
|
-
if (options.command.length === 0) {
|
|
10
|
-
throw new Error('GenericCommandAdapter requires a command.');
|
|
11
|
-
}
|
|
12
|
-
this.name = options.name ?? 'generic-command';
|
|
13
|
-
this.command = [...options.command];
|
|
14
|
-
}
|
|
15
|
-
async prepareSession(_input) {
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
18
|
-
async runTurn(input) {
|
|
19
|
-
const command = this.command.map((part) => substitute(part, input));
|
|
20
|
-
const child = (0, node_child_process_1.spawn)(command[0], command.slice(1), {
|
|
21
|
-
cwd: input.workDir,
|
|
22
|
-
env: {
|
|
23
|
-
...process.env,
|
|
24
|
-
YW_RUN_ID: input.runId,
|
|
25
|
-
YW_WORK_DIR: input.workDir,
|
|
26
|
-
YW_PROMPT_FILE: input.promptFilePath,
|
|
27
|
-
YW_SESSION_FILE: `${input.workDir}/session.json`,
|
|
28
|
-
YW_RUNTIME_LOG_SUBMISSIONS: '1',
|
|
29
|
-
},
|
|
30
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
31
|
-
});
|
|
32
|
-
child.stdout.on('data', (chunk) => {
|
|
33
|
-
void input.onOutput?.(String(chunk));
|
|
34
|
-
});
|
|
35
|
-
child.stderr.on('data', (chunk) => {
|
|
36
|
-
void input.onOutput?.(String(chunk));
|
|
37
|
-
});
|
|
38
|
-
return {
|
|
39
|
-
completion: new Promise((resolve, reject) => {
|
|
40
|
-
child.once('error', reject);
|
|
41
|
-
child.once('exit', (exitCode, signal) => {
|
|
42
|
-
resolve({
|
|
43
|
-
exitCode,
|
|
44
|
-
signal,
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
}),
|
|
48
|
-
cancel: async () => {
|
|
49
|
-
child.kill('SIGTERM');
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
exports.GenericCommandAdapter = GenericCommandAdapter;
|
|
55
|
-
function substitute(template, input) {
|
|
56
|
-
return template.replaceAll('{workDir}', input.workDir).replaceAll('{runId}', input.runId).replaceAll('{runDir}', input.runDir).replaceAll('{promptFile}', input.promptFilePath);
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=generic-command-adapter.js.map
|