Skip to content

Commit

Permalink
Return total count from ListAgents. (#233)
Browse files Browse the repository at this point in the history
Does what it says on the tin.
  • Loading branch information
Matt Welsh authored Jan 29, 2024
1 parent 2488121 commit fecb723
Show file tree
Hide file tree
Showing 9 changed files with 50 additions and 20 deletions.
6 changes: 6 additions & 0 deletions packages/fixie-common/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# @fixieai/fixie-common

## 1.0.15

### Patch Changes

- Return total count from ListAgents.

## 1.0.14

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/fixie-common/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@fixieai/fixie-common",
"description": "Node and browser common code for the Fixie platform SDK.",
"version": "1.0.14",
"version": "1.0.15",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
12 changes: 10 additions & 2 deletions packages/fixie-common/src/agent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,10 @@ export class FixieAgentBase {
teamId?: string;
offset?: number;
limit?: number;
}): Promise<FixieAgentBase[]> {
}): Promise<{ agents: FixieAgentBase[]; total: number }> {
let agentList: Agent[] = [];
let requestOffset = offset;
let total = 0;
while (true) {
const requestLimit = Math.min(limit - agentList.length, 100);
if (requestLimit <= 0) {
Expand All @@ -71,14 +72,21 @@ export class FixieAgentBase {
} `
)) as {
agents: Agent[];
pageInfo: {
totalResultCount: number;
};
};
agentList = agentList.concat(result.agents);
total = result.pageInfo.totalResultCount;
if (result.agents.length < requestLimit) {
break;
}
requestOffset += requestLimit;
}
return agentList.map((agent: Agent) => new FixieAgentBase(client, agent));
return {
agents: agentList.map((agent: Agent) => new FixieAgentBase(client, agent)),
total,
};
}

/** Return the metadata associated with the given agent. */
Expand Down
28 changes: 18 additions & 10 deletions packages/fixie-common/tests/agent.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,15 +60,19 @@ describe('FixieAgentBase Agent tests', () => {
handle: 'fake-agent-handle-4',
},
],
pageInfo: {
totalResultCount: 4,
},
});
const agents = await FixieAgentBase.ListAgents({ client });
const result = await FixieAgentBase.ListAgents({ client });
expect(mock.mock.calls[0][0].toString()).toStrictEqual(
'https://fake.api.fixie.ai/api/v1/agents?offset=0&limit=100'
);
expect(agents.length).toBe(4);
expect(agents[0].id).toBe('fake-agent-id-1');
expect(agents[0].handle).toBe('fake-agent-handle-1');
expect(agents[0].agentUrl()).toBe('https://console.fixie.ai/agents/fake-agent-id-1');
expect(result.total).toBe(4);
expect(result.agents.length).toBe(4);
expect(result.agents[0].id).toBe('fake-agent-id-1');
expect(result.agents[0].handle).toBe('fake-agent-handle-1');
expect(result.agents[0].agentUrl()).toBe('https://console.fixie.ai/agents/fake-agent-id-1');
});

it('ListAgents pagination works', async () => {
Expand All @@ -92,13 +96,17 @@ describe('FixieAgentBase Agent tests', () => {
handle: 'fake-agent-handle-4',
},
],
pageInfo: {
totalResultCount: 20,
},
});
const agents = await FixieAgentBase.ListAgents({ client, offset: 0, limit: 4 });
const result = await FixieAgentBase.ListAgents({ client, offset: 0, limit: 4 });
expect(mock.mock.calls[0][0].toString()).toStrictEqual('https://fake.api.fixie.ai/api/v1/agents?offset=0&limit=4');
expect(agents.length).toBe(4);
expect(agents[0].id).toBe('fake-agent-id-1');
expect(agents[0].handle).toBe('fake-agent-handle-1');
expect(agents[0].agentUrl()).toBe('https://console.fixie.ai/agents/fake-agent-id-1');
expect(result.total).toBe(20);
expect(result.agents.length).toBe(4);
expect(result.agents[0].id).toBe('fake-agent-id-1');
expect(result.agents[0].handle).toBe('fake-agent-handle-1');
expect(result.agents[0].agentUrl()).toBe('https://console.fixie.ai/agents/fake-agent-id-1');
});

it('CreateAgent works', async () => {
Expand Down
8 changes: 8 additions & 0 deletions packages/fixie/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# fixie

## 7.0.15

### Patch Changes

- Return total count from ListAgents.
- Updated dependencies
- @fixieai/fixie-common@1.0.15

## 7.0.14

### Patch Changes
Expand Down
4 changes: 2 additions & 2 deletions packages/fixie/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "fixie",
"version": "7.0.14",
"version": "7.0.15",
"license": "MIT",
"repository": "fixie-ai/fixie-sdk",
"bugs": "https://github.com/fixie-ai/fixie-sdk/issues",
Expand All @@ -22,7 +22,7 @@
"bin": "dist/src/cli.js",
"types": "dist/src/index.d.ts",
"dependencies": {
"@fixieai/fixie-common": "^1.0.14",
"@fixieai/fixie-common": "^1.0.15",
"axios": "^1.6.3",
"commander": "^11.0.0",
"execa": "^8.0.1",
Expand Down
4 changes: 2 additions & 2 deletions packages/fixie/src/agent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ export class FixieAgent extends FixieAgentBase {
environmentVariables,
},
},
defaultRuntimeParameters: defaultRuntimeParameters,
defaultRuntimeParameters,
},
})) as { revision: AgentRevision };
return result.revision;
Expand All @@ -166,7 +166,7 @@ export class FixieAgent extends FixieAgentBase {
// The API does not currently provide a way to return an agent by its handle, so we scan
// to see if the agent with the same handle already exists.
const agentList = await FixieAgentBase.ListAgents({ client, teamId });
const found = agentList.find((agent) => agent.metadata.handle === config.handle) ?? null;
const found = agentList.agents.find((agent) => agent.metadata.handle === config.handle) ?? null;
if (found) {
agent = await this.GetAgent({ client, agentId: found.metadata.agentId });
await agent.update({
Expand Down
2 changes: 1 addition & 1 deletion packages/fixie/src/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -583,7 +583,7 @@ agent
catchErrors(async (opts) => {
const client = await AuthenticateOrLogIn({ apiUrl: program.opts().url });
const result = await FixieAgent.ListAgents({ client, teamId: opts.teamId });
showResult(await Promise.all(result.map((agent) => agent.metadata)), program.opts().raw);
showResult(await Promise.all(result.agents.map((agent) => agent.metadata)), program.opts().raw);
})
);

Expand Down
4 changes: 2 additions & 2 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -766,7 +766,7 @@ __metadata:
languageName: node
linkType: hard

"@fixieai/fixie-common@^1.0.14, @fixieai/fixie-common@workspace:packages/fixie-common":
"@fixieai/fixie-common@^1.0.14, @fixieai/fixie-common@^1.0.15, @fixieai/fixie-common@workspace:packages/fixie-common":
version: 0.0.0-use.local
resolution: "@fixieai/fixie-common@workspace:packages/fixie-common"
dependencies:
Expand Down Expand Up @@ -4060,7 +4060,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "fixie@workspace:packages/fixie"
dependencies:
"@fixieai/fixie-common": ^1.0.14
"@fixieai/fixie-common": ^1.0.15
"@tsconfig/node18": ^2.0.1
"@types/extract-files": ^8.1.1
"@types/jest": ^29.5.11
Expand Down

0 comments on commit fecb723

Please sign in to comment.