New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

@arc-dev/examples

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@arc-dev/examples - npm Package Compare versions

Comparing version
0.0.2-alpha.2
to
0.0.2-alpha.3
+2
-2
dist/index.cjs

@@ -181,4 +181,4 @@ 'use strict';

});
node.action(NodeId.PlayerMove, async ({ state, edgeIn, render }) => {
const answer = edgeIn.get(NodeId.PlayerMove) ?? "";
node.action(NodeId.PlayerMove, async ({ state, edgeContext, render }) => {
const answer = edgeContext.get(NodeId.PlayerMove) ?? "";
const [rowStr, colStr] = answer.split(",");

@@ -185,0 +185,0 @@ const row = parseInt(rowStr?.trim() || "0");

@@ -1,1 +0,1 @@

{"version":3,"file":"index.cjs","sources":["../src/arcs/tone/tone.arc.ts","../src/arcs/tic-tac-toe/agents/move.agent.ts","../src/arcs/tic-tac-toe/actions/check-winner.ts","../src/arcs/tic-tac-toe/game-loop.arc.ts","../src/arcs/tic-tac-toe/tic-tac-toe.arc.ts"],"sourcesContent":["import { createArc, Arc } from \"@arc-dev/core\";\nimport { z } from \"zod\";\n\nenum NodeId {\n Plan = \"plan-style\",\n Verify = \"verify-style\",\n Finalize = \"finalize-rewrite\",\n}\n\nenum ConditionId {\n HighQuality = \"high-quality\",\n}\nconst QUALITY_THRESHOLD = 0.7;\n\ntype State = {\n examples: string[];\n text: string;\n};\n\nexport const ToneRewriterArc: Arc = createArc<State>(\n \"tone-rewriter\",\n ({ node, edge }) => {\n node.agent(NodeId.Plan, {\n model: \"openai/gpt-4o-mini\",\n output: z.object({\n text: z.string(),\n }),\n messages: ({ state }) => {\n const examples = state.get(\"examples\");\n const text = state.get(\"text\");\n\n return [\n {\n role: \"system\",\n content:\n \"You are a helpful assistant that rewrites text in different tones and styles that is based on the provided examples of the users writing styles.\",\n },\n {\n role: \"user\",\n content: `\n My typically writing style is as follows:\n ${examples.join(\"\\n\\n\")}.\n \n You must rewrite the following text to match my writing style as closely as possible, do not changing the meaning of the text:\n \"${text}\"\n `,\n },\n ];\n },\n });\n node.agent(NodeId.Verify, {\n model: \"openai/gpt-4o-mini\",\n messages: ({ state, context }) => {\n const examples = state.get(\"examples\");\n const rewrittenText = context.get(NodeId.Plan).get(\"text\");\n\n return [\n {\n role: \"system\",\n content:\n \"You are a style critic that evaluates text rewrites. Respond with ONLY a number between 0.0 and 1.0 representing the quality score.\",\n },\n {\n role: \"user\",\n content: `Evaluate how well this text matches the users style of writing:\n \n My writing style examples are:\n ${examples.join(\"\\n\\n\")}.\n \n Text:\n \"${rewrittenText}\"\n \n Provide an overall quality score between 0.0 (poor) and 1.0 (excellent).`,\n },\n ];\n },\n output: z.object({\n quality: z.number(),\n }),\n });\n node.action(NodeId.Finalize, ({ state, context, render }) => {\n const text = context.get(NodeId.Plan).get(\"text\");\n\n render(text);\n\n return state.set(\"result\", context.get(NodeId.Plan).get(\"text\"));\n });\n\n edge.condition(\n ConditionId.HighQuality,\n ({ context }) =>\n context.get(NodeId.Verify).get(\"quality\") >= QUALITY_THRESHOLD\n );\n edge.from(NodeId.Plan).to(NodeId.Verify);\n edge.from(NodeId.Verify).to(NodeId.Finalize).when(ConditionId.HighQuality);\n }\n);\n","import { ArcStateContext } from \"@arc-dev/core\";\nimport { State } from \"../tic-tac-toe.arc\";\nimport { z } from \"zod\";\n\nexport const moveAgent = {\n model: \"openai/gpt-4o\" as const,\n output: z.object({\n row: z.number(),\n col: z.number(),\n }),\n when: ({ state }: ArcStateContext<State, Record<string, never>>) =>\n !state.get(\"gameOver\"),\n messages: ({ state }: ArcStateContext<State, Record<string, never>>) => {\n const board = state.get(\"board\");\n\n return [\n {\n role: \"system\" as const,\n content: `\n You are playing tic-tac-toe as 'O' against 'X'. Empty cells are \"\" (empty strings).\n Play strategically: win if possible, block opponent wins, prefer center/corners over edges.\n Only play in empty (\"\") cells.\n `,\n },\n {\n role: \"user\" as const,\n content: `\n Board state: ${JSON.stringify(board)}\n Return the row and col indices of your move (must be an empty cell).\n `,\n },\n ];\n },\n};\n","import { State } from \"../tic-tac-toe.arc\";\nimport { ArcStateContext, TypedImmutableMap } from \"@arc-dev/core\";\n\nexport const checkWinner = (\n board: State[\"board\"]\n): {\n gameOver: boolean;\n winner: \"You Win!\" | \"You Lose!\" | \"It's a Draw!\" | null;\n} => {\n for (let row = 0; row < 3; row++) {\n if (\n board[row]![0] &&\n board[row]![0] === board[row]![1] &&\n board[row]![1] === board[row]![2]\n ) {\n return {\n gameOver: true,\n winner: board[row]![0] === \"X\" ? \"You Win!\" : \"You Lose!\",\n };\n }\n }\n\n for (let col = 0; col < 3; col++) {\n if (\n board[0]![col] &&\n board[0]![col] === board[1]![col] &&\n board[1]![col] === board[2]![col]\n ) {\n return {\n gameOver: true,\n winner: board[0]![col] === \"X\" ? \"You Win!\" : \"You Lose!\",\n };\n }\n }\n\n if (\n board[0]![0] &&\n board[0]![0] === board[1]![1] &&\n board[1]![1] === board[2]![2]\n ) {\n return {\n gameOver: true,\n winner: board[0]![0] === \"X\" ? \"You Win!\" : \"You Lose!\",\n };\n }\n\n if (\n board[0]![2] &&\n board[0]![2] === board[1]![1] &&\n board[1]![1] === board[2]![0]\n ) {\n return {\n gameOver: true,\n winner: board[0]![2] === \"X\" ? \"You Win!\" : \"You Lose!\",\n };\n }\n\n const allFilled = board.every((row) => row.every((cell) => cell !== \"\"));\n\n if (allFilled) {\n return {\n gameOver: true,\n winner: \"It's a Draw!\",\n };\n }\n\n return {\n gameOver: false,\n winner: null,\n };\n};\n\nexport const winnerAction = async ({\n state,\n}: ArcStateContext<State, any>): Promise<TypedImmutableMap<State>> => {\n const board = state.get(\"board\");\n const winnerOrNot = checkWinner(board);\n\n return state\n .set(\"gameOver\", winnerOrNot.gameOver)\n .set(\"winner\", winnerOrNot.winner);\n};\n","import { createArc, Arc } from \"@arc-dev/core\";\nimport { State } from \"./tic-tac-toe.arc\";\nimport { moveAgent } from \"./agents/move.agent\";\nimport { checkWinner } from \"./actions/check-winner\";\n\nenum NodeId {\n ShowBoard = \"show-board\",\n PlayerMove = \"player-move\",\n CheckWinner = \"check-winner\",\n GetAIMove = \"get-ai-move\",\n ApplyAIMove = \"apply-ai-move\",\n}\n\nconst Id = \"game-loop-body\";\n\nexport const TicTacToeGameLoopArc: Arc = createArc<State>(\n Id,\n ({ node, edge }) => {\n node.action(NodeId.ShowBoard, async ({ state, render }) => {\n const board = state.get(\"board\");\n\n let output = \"\\nBoard:\\n\";\n\n board.forEach((row: string[], idx: number) => {\n const formattedRow = row.map((cell) => cell || \" \").join(\" | \");\n output += `${idx}: ${formattedRow}\\n`;\n });\n\n render(output);\n\n return state;\n });\n\n node.action(NodeId.PlayerMove, async ({ state, edgeIn, render }) => {\n const answer = edgeIn.get(NodeId.PlayerMove) ?? \"\";\n const [rowStr, colStr] = answer.split(\",\");\n const row = parseInt(rowStr?.trim() || \"0\");\n const col = parseInt(colStr?.trim() || \"0\");\n\n const updatedBoard = state\n .get(\"board\")\n .map((r: string[], rIdx: number) =>\n r.map((cell: string, cIdx: number) =>\n rIdx === row && cIdx === col ? \"X\" : cell\n )\n );\n\n let output = \"\";\n updatedBoard.forEach((row: string[], idx: number) => {\n const formattedRow = row.map((cell: string) => cell || \" \").join(\" | \");\n output += `${idx}: ${formattedRow}\\n`;\n });\n\n render(output);\n\n return state\n .set(\"board\", updatedBoard)\n .set(\"currentPlayer\", \"O\" as const);\n });\n\n node.action(NodeId.CheckWinner, async ({ state, render }) => {\n const board = state.get(\"board\");\n const result = checkWinner(board);\n\n if (result.gameOver) {\n render(`🎮 Game Over: ${result.winner}`);\n }\n\n return state\n .set(\"gameOver\", result.gameOver)\n .set(\"winner\", result.winner);\n });\n\n node.agent(NodeId.GetAIMove, moveAgent);\n\n node.action(NodeId.ApplyAIMove, async ({ state, context, render }) => {\n const moveAgentResult = context.get(NodeId.GetAIMove);\n const row = moveAgentResult.get(\"row\");\n const col = moveAgentResult.get(\"col\");\n const board = state.get(\"board\");\n\n let finalRow = row;\n let finalCol = col;\n\n if (\n row < 0 ||\n row >= board.length ||\n col < 0 ||\n col >= board[0]!.length ||\n board[row]![col]\n ) {\n outerLoop: for (let r = 0; r < board.length; r++) {\n for (let c = 0; c < board[r]!.length; c++) {\n if (!board[r]![c]) {\n finalRow = r;\n finalCol = c;\n break outerLoop;\n }\n }\n }\n }\n\n const updatedBoard = board.map((r: string[], rIdx: number) =>\n r.map((cell: string, cIdx: number) =>\n rIdx === finalRow && cIdx === finalCol ? \"O\" : cell\n )\n );\n\n let output = \"\";\n updatedBoard.forEach((row: string[], idx: number) => {\n const formattedRow = row.map((cell: string) => cell || \" \").join(\" | \");\n output += `${idx}: ${formattedRow}\\n`;\n });\n\n render(output);\n\n return state\n .set(\"board\", updatedBoard)\n .set(\"currentPlayer\", \"X\" as const);\n });\n\n edge\n .from(NodeId.ShowBoard)\n .waitForInput({\n message: \"Enter your move (row, col): \",\n validator: (input: string, { state }) => {\n const [rowStr, colStr] = input.split(\",\");\n const row = parseInt(rowStr?.trim() || \"\");\n const col = parseInt(colStr?.trim() || \"\");\n\n if (isNaN(row) || isNaN(col)) {\n return {\n valid: false,\n message: \"Invalid format. Use: row,col (e.g., 0,1)\",\n };\n }\n\n const board = state.get(\"board\");\n if (\n row < 0 ||\n row >= board.length ||\n col < 0 ||\n col >= board[0]!.length\n ) {\n return {\n valid: false,\n message: \"Out of bounds. Try again.\",\n };\n }\n\n if (board[row]![col]) {\n return {\n valid: false,\n message: \"Space taken. Choose an empty space.\",\n };\n }\n\n return { valid: true };\n },\n })\n .to(NodeId.PlayerMove);\n edge.from(NodeId.PlayerMove).to(NodeId.GetAIMove);\n edge.from(NodeId.GetAIMove).to(NodeId.ApplyAIMove);\n edge.from(NodeId.ApplyAIMove).to(NodeId.CheckWinner);\n }\n);\n","import { createArc, Arc } from \"@arc-dev/core\";\nimport { TicTacToeGameLoopArc } from \"./game-loop.arc\";\n\nenum ArcId {\n GameLoop = \"game-loop\",\n}\n\ntype BoardState = string[][];\n\nexport type State = {\n board: BoardState;\n currentPlayer: \"X\" | \"O\";\n gameOver: boolean;\n winner: \"You Win!\" | \"You Lose!\" | \"It's a Draw!\" | null;\n};\n\nexport const TicTacToeArc: Arc = createArc<State>(\n \"tic-tac-toe\",\n ({ node, edge }) => {\n node.arc(ArcId.GameLoop, TicTacToeGameLoopArc);\n\n edge\n .from(ArcId.GameLoop)\n .to(ArcId.GameLoop)\n .when(({ state }) => !state.get(\"gameOver\"))\n .maxIterations(9);\n }\n);\n"],"names":["NodeId","createArc","z"],"mappings":"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"}
{"version":3,"file":"index.cjs","sources":["../src/arcs/tone/tone.arc.ts","../src/arcs/tic-tac-toe/agents/move.agent.ts","../src/arcs/tic-tac-toe/actions/check-winner.ts","../src/arcs/tic-tac-toe/game-loop.arc.ts","../src/arcs/tic-tac-toe/tic-tac-toe.arc.ts"],"sourcesContent":["import { createArc, Arc } from \"@arc-dev/core\";\nimport { z } from \"zod\";\n\nenum NodeId {\n Plan = \"plan-style\",\n Verify = \"verify-style\",\n Finalize = \"finalize-rewrite\",\n}\n\nenum ConditionId {\n HighQuality = \"high-quality\",\n}\nconst QUALITY_THRESHOLD = 0.7;\n\ntype State = {\n examples: string[];\n text: string;\n};\n\nexport const ToneRewriterArc: Arc = createArc<State>(\n \"tone-rewriter\",\n ({ node, edge }) => {\n node.agent(NodeId.Plan, {\n model: \"openai/gpt-4o-mini\",\n output: z.object({\n text: z.string(),\n }),\n messages: ({ state }) => {\n const examples = state.get(\"examples\");\n const text = state.get(\"text\");\n\n return [\n {\n role: \"system\",\n content:\n \"You are a helpful assistant that rewrites text in different tones and styles that is based on the provided examples of the users writing styles.\",\n },\n {\n role: \"user\",\n content: `\n My typically writing style is as follows:\n ${examples.join(\"\\n\\n\")}.\n \n You must rewrite the following text to match my writing style as closely as possible, do not changing the meaning of the text:\n \"${text}\"\n `,\n },\n ];\n },\n });\n node.agent(NodeId.Verify, {\n model: \"openai/gpt-4o-mini\",\n messages: ({ state, context }) => {\n const examples = state.get(\"examples\");\n const rewrittenText = context.get(NodeId.Plan).get(\"text\");\n\n return [\n {\n role: \"system\",\n content:\n \"You are a style critic that evaluates text rewrites. Respond with ONLY a number between 0.0 and 1.0 representing the quality score.\",\n },\n {\n role: \"user\",\n content: `Evaluate how well this text matches the users style of writing:\n \n My writing style examples are:\n ${examples.join(\"\\n\\n\")}.\n \n Text:\n \"${rewrittenText}\"\n \n Provide an overall quality score between 0.0 (poor) and 1.0 (excellent).`,\n },\n ];\n },\n output: z.object({\n quality: z.number(),\n }),\n });\n node.action(NodeId.Finalize, ({ state, context, render }) => {\n const text = context.get(NodeId.Plan).get(\"text\");\n\n render(text);\n\n return state.set(\"result\", context.get(NodeId.Plan).get(\"text\"));\n });\n\n edge.condition(\n ConditionId.HighQuality,\n ({ context }) =>\n context.get(NodeId.Verify).get(\"quality\") >= QUALITY_THRESHOLD\n );\n edge.from(NodeId.Plan).to(NodeId.Verify);\n edge.from(NodeId.Verify).to(NodeId.Finalize).when(ConditionId.HighQuality);\n }\n);\n","import { ArcStateContext } from \"@arc-dev/core\";\nimport { State } from \"../tic-tac-toe.arc\";\nimport { z } from \"zod\";\n\nexport const moveAgent = {\n model: \"openai/gpt-4o\" as const,\n output: z.object({\n row: z.number(),\n col: z.number(),\n }),\n when: ({ state }: ArcStateContext<State, Record<string, never>>) =>\n !state.get(\"gameOver\"),\n messages: ({ state }: ArcStateContext<State, Record<string, never>>) => {\n const board = state.get(\"board\");\n\n return [\n {\n role: \"system\" as const,\n content: `\n You are playing tic-tac-toe as 'O' against 'X'. Empty cells are \"\" (empty strings).\n Play strategically: win if possible, block opponent wins, prefer center/corners over edges.\n Only play in empty (\"\") cells.\n `,\n },\n {\n role: \"user\" as const,\n content: `\n Board state: ${JSON.stringify(board)}\n Return the row and col indices of your move (must be an empty cell).\n `,\n },\n ];\n },\n};\n","import { State } from \"../tic-tac-toe.arc\";\nimport { ArcStateContext, TypedImmutableMap } from \"@arc-dev/core\";\n\nexport const checkWinner = (\n board: State[\"board\"]\n): {\n gameOver: boolean;\n winner: \"You Win!\" | \"You Lose!\" | \"It's a Draw!\" | null;\n} => {\n for (let row = 0; row < 3; row++) {\n if (\n board[row]![0] &&\n board[row]![0] === board[row]![1] &&\n board[row]![1] === board[row]![2]\n ) {\n return {\n gameOver: true,\n winner: board[row]![0] === \"X\" ? \"You Win!\" : \"You Lose!\",\n };\n }\n }\n\n for (let col = 0; col < 3; col++) {\n if (\n board[0]![col] &&\n board[0]![col] === board[1]![col] &&\n board[1]![col] === board[2]![col]\n ) {\n return {\n gameOver: true,\n winner: board[0]![col] === \"X\" ? \"You Win!\" : \"You Lose!\",\n };\n }\n }\n\n if (\n board[0]![0] &&\n board[0]![0] === board[1]![1] &&\n board[1]![1] === board[2]![2]\n ) {\n return {\n gameOver: true,\n winner: board[0]![0] === \"X\" ? \"You Win!\" : \"You Lose!\",\n };\n }\n\n if (\n board[0]![2] &&\n board[0]![2] === board[1]![1] &&\n board[1]![1] === board[2]![0]\n ) {\n return {\n gameOver: true,\n winner: board[0]![2] === \"X\" ? \"You Win!\" : \"You Lose!\",\n };\n }\n\n const allFilled = board.every((row) => row.every((cell) => cell !== \"\"));\n\n if (allFilled) {\n return {\n gameOver: true,\n winner: \"It's a Draw!\",\n };\n }\n\n return {\n gameOver: false,\n winner: null,\n };\n};\n\nexport const winnerAction = async ({\n state,\n}: ArcStateContext<State, any>): Promise<TypedImmutableMap<State>> => {\n const board = state.get(\"board\");\n const winnerOrNot = checkWinner(board);\n\n return state\n .set(\"gameOver\", winnerOrNot.gameOver)\n .set(\"winner\", winnerOrNot.winner);\n};\n","import { createArc, Arc } from \"@arc-dev/core\";\nimport { State } from \"./tic-tac-toe.arc\";\nimport { moveAgent } from \"./agents/move.agent\";\nimport { checkWinner } from \"./actions/check-winner\";\n\nenum NodeId {\n ShowBoard = \"show-board\",\n PlayerMove = \"player-move\",\n CheckWinner = \"check-winner\",\n GetAIMove = \"get-ai-move\",\n ApplyAIMove = \"apply-ai-move\",\n}\n\nconst Id = \"game-loop-body\";\n\nexport const TicTacToeGameLoopArc: Arc = createArc<State>(\n Id,\n ({ node, edge }) => {\n node.action(NodeId.ShowBoard, async ({ state, render }) => {\n const board = state.get(\"board\");\n\n let output = \"\\nBoard:\\n\";\n\n board.forEach((row: string[], idx: number) => {\n const formattedRow = row.map((cell) => cell || \" \").join(\" | \");\n output += `${idx}: ${formattedRow}\\n`;\n });\n\n render(output);\n\n return state;\n });\n\n node.action(NodeId.PlayerMove, async ({ state, edgeContext, render }) => {\n const answer = edgeContext.get(NodeId.PlayerMove) ?? \"\";\n const [rowStr, colStr] = answer.split(\",\");\n const row = parseInt(rowStr?.trim() || \"0\");\n const col = parseInt(colStr?.trim() || \"0\");\n\n const updatedBoard = state\n .get(\"board\")\n .map((r: string[], rIdx: number) =>\n r.map((cell: string, cIdx: number) =>\n rIdx === row && cIdx === col ? \"X\" : cell\n )\n );\n\n let output = \"\";\n updatedBoard.forEach((row: string[], idx: number) => {\n const formattedRow = row.map((cell: string) => cell || \" \").join(\" | \");\n output += `${idx}: ${formattedRow}\\n`;\n });\n\n render(output);\n\n return state\n .set(\"board\", updatedBoard)\n .set(\"currentPlayer\", \"O\" as const);\n });\n\n node.action(NodeId.CheckWinner, async ({ state, render }) => {\n const board = state.get(\"board\");\n const result = checkWinner(board);\n\n if (result.gameOver) {\n render(`🎮 Game Over: ${result.winner}`);\n }\n\n return state\n .set(\"gameOver\", result.gameOver)\n .set(\"winner\", result.winner);\n });\n\n node.agent(NodeId.GetAIMove, moveAgent);\n\n node.action(NodeId.ApplyAIMove, async ({ state, context, render }) => {\n const moveAgentResult = context.get(NodeId.GetAIMove);\n const row = moveAgentResult.get(\"row\");\n const col = moveAgentResult.get(\"col\");\n const board = state.get(\"board\");\n\n let finalRow = row;\n let finalCol = col;\n\n if (\n row < 0 ||\n row >= board.length ||\n col < 0 ||\n col >= board[0]!.length ||\n board[row]![col]\n ) {\n outerLoop: for (let r = 0; r < board.length; r++) {\n for (let c = 0; c < board[r]!.length; c++) {\n if (!board[r]![c]) {\n finalRow = r;\n finalCol = c;\n break outerLoop;\n }\n }\n }\n }\n\n const updatedBoard = board.map((r: string[], rIdx: number) =>\n r.map((cell: string, cIdx: number) =>\n rIdx === finalRow && cIdx === finalCol ? \"O\" : cell\n )\n );\n\n let output = \"\";\n updatedBoard.forEach((row: string[], idx: number) => {\n const formattedRow = row.map((cell: string) => cell || \" \").join(\" | \");\n output += `${idx}: ${formattedRow}\\n`;\n });\n\n render(output);\n\n return state\n .set(\"board\", updatedBoard)\n .set(\"currentPlayer\", \"X\" as const);\n });\n\n edge\n .from(NodeId.ShowBoard)\n .waitForInput({\n message: \"Enter your move (row, col): \",\n validator: (input: string, { state }) => {\n const [rowStr, colStr] = input.split(\",\");\n const row = parseInt(rowStr?.trim() || \"\");\n const col = parseInt(colStr?.trim() || \"\");\n\n if (isNaN(row) || isNaN(col)) {\n return {\n valid: false,\n message: \"Invalid format. Use: row,col (e.g., 0,1)\",\n };\n }\n\n const board = state.get(\"board\");\n if (\n row < 0 ||\n row >= board.length ||\n col < 0 ||\n col >= board[0]!.length\n ) {\n return {\n valid: false,\n message: \"Out of bounds. Try again.\",\n };\n }\n\n if (board[row]![col]) {\n return {\n valid: false,\n message: \"Space taken. Choose an empty space.\",\n };\n }\n\n return { valid: true };\n },\n })\n .to(NodeId.PlayerMove);\n edge.from(NodeId.PlayerMove).to(NodeId.GetAIMove);\n edge.from(NodeId.GetAIMove).to(NodeId.ApplyAIMove);\n edge.from(NodeId.ApplyAIMove).to(NodeId.CheckWinner);\n }\n);\n","import { createArc, Arc } from \"@arc-dev/core\";\nimport { TicTacToeGameLoopArc } from \"./game-loop.arc\";\n\nenum ArcId {\n GameLoop = \"game-loop\",\n}\n\ntype BoardState = string[][];\n\nexport type State = {\n board: BoardState;\n currentPlayer: \"X\" | \"O\";\n gameOver: boolean;\n winner: \"You Win!\" | \"You Lose!\" | \"It's a Draw!\" | null;\n};\n\nexport const TicTacToeArc: Arc = createArc<State>(\n \"tic-tac-toe\",\n ({ node, edge }) => {\n node.arc(ArcId.GameLoop, TicTacToeGameLoopArc);\n\n edge\n .from(ArcId.GameLoop)\n .to(ArcId.GameLoop)\n .when(({ state }) => !state.get(\"gameOver\"))\n .maxIterations(9);\n }\n);\n"],"names":["NodeId","createArc","z"],"mappings":"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"}

@@ -179,4 +179,4 @@ import { createArc } from '@arc-dev/core';

});
node.action(NodeId.PlayerMove, async ({ state, edgeIn, render }) => {
const answer = edgeIn.get(NodeId.PlayerMove) ?? "";
node.action(NodeId.PlayerMove, async ({ state, edgeContext, render }) => {
const answer = edgeContext.get(NodeId.PlayerMove) ?? "";
const [rowStr, colStr] = answer.split(",");

@@ -183,0 +183,0 @@ const row = parseInt(rowStr?.trim() || "0");

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sources":["../src/arcs/tone/tone.arc.ts","../src/arcs/tic-tac-toe/agents/move.agent.ts","../src/arcs/tic-tac-toe/actions/check-winner.ts","../src/arcs/tic-tac-toe/game-loop.arc.ts","../src/arcs/tic-tac-toe/tic-tac-toe.arc.ts"],"sourcesContent":["import { createArc, Arc } from \"@arc-dev/core\";\nimport { z } from \"zod\";\n\nenum NodeId {\n Plan = \"plan-style\",\n Verify = \"verify-style\",\n Finalize = \"finalize-rewrite\",\n}\n\nenum ConditionId {\n HighQuality = \"high-quality\",\n}\nconst QUALITY_THRESHOLD = 0.7;\n\ntype State = {\n examples: string[];\n text: string;\n};\n\nexport const ToneRewriterArc: Arc = createArc<State>(\n \"tone-rewriter\",\n ({ node, edge }) => {\n node.agent(NodeId.Plan, {\n model: \"openai/gpt-4o-mini\",\n output: z.object({\n text: z.string(),\n }),\n messages: ({ state }) => {\n const examples = state.get(\"examples\");\n const text = state.get(\"text\");\n\n return [\n {\n role: \"system\",\n content:\n \"You are a helpful assistant that rewrites text in different tones and styles that is based on the provided examples of the users writing styles.\",\n },\n {\n role: \"user\",\n content: `\n My typically writing style is as follows:\n ${examples.join(\"\\n\\n\")}.\n \n You must rewrite the following text to match my writing style as closely as possible, do not changing the meaning of the text:\n \"${text}\"\n `,\n },\n ];\n },\n });\n node.agent(NodeId.Verify, {\n model: \"openai/gpt-4o-mini\",\n messages: ({ state, context }) => {\n const examples = state.get(\"examples\");\n const rewrittenText = context.get(NodeId.Plan).get(\"text\");\n\n return [\n {\n role: \"system\",\n content:\n \"You are a style critic that evaluates text rewrites. Respond with ONLY a number between 0.0 and 1.0 representing the quality score.\",\n },\n {\n role: \"user\",\n content: `Evaluate how well this text matches the users style of writing:\n \n My writing style examples are:\n ${examples.join(\"\\n\\n\")}.\n \n Text:\n \"${rewrittenText}\"\n \n Provide an overall quality score between 0.0 (poor) and 1.0 (excellent).`,\n },\n ];\n },\n output: z.object({\n quality: z.number(),\n }),\n });\n node.action(NodeId.Finalize, ({ state, context, render }) => {\n const text = context.get(NodeId.Plan).get(\"text\");\n\n render(text);\n\n return state.set(\"result\", context.get(NodeId.Plan).get(\"text\"));\n });\n\n edge.condition(\n ConditionId.HighQuality,\n ({ context }) =>\n context.get(NodeId.Verify).get(\"quality\") >= QUALITY_THRESHOLD\n );\n edge.from(NodeId.Plan).to(NodeId.Verify);\n edge.from(NodeId.Verify).to(NodeId.Finalize).when(ConditionId.HighQuality);\n }\n);\n","import { ArcStateContext } from \"@arc-dev/core\";\nimport { State } from \"../tic-tac-toe.arc\";\nimport { z } from \"zod\";\n\nexport const moveAgent = {\n model: \"openai/gpt-4o\" as const,\n output: z.object({\n row: z.number(),\n col: z.number(),\n }),\n when: ({ state }: ArcStateContext<State, Record<string, never>>) =>\n !state.get(\"gameOver\"),\n messages: ({ state }: ArcStateContext<State, Record<string, never>>) => {\n const board = state.get(\"board\");\n\n return [\n {\n role: \"system\" as const,\n content: `\n You are playing tic-tac-toe as 'O' against 'X'. Empty cells are \"\" (empty strings).\n Play strategically: win if possible, block opponent wins, prefer center/corners over edges.\n Only play in empty (\"\") cells.\n `,\n },\n {\n role: \"user\" as const,\n content: `\n Board state: ${JSON.stringify(board)}\n Return the row and col indices of your move (must be an empty cell).\n `,\n },\n ];\n },\n};\n","import { State } from \"../tic-tac-toe.arc\";\nimport { ArcStateContext, TypedImmutableMap } from \"@arc-dev/core\";\n\nexport const checkWinner = (\n board: State[\"board\"]\n): {\n gameOver: boolean;\n winner: \"You Win!\" | \"You Lose!\" | \"It's a Draw!\" | null;\n} => {\n for (let row = 0; row < 3; row++) {\n if (\n board[row]![0] &&\n board[row]![0] === board[row]![1] &&\n board[row]![1] === board[row]![2]\n ) {\n return {\n gameOver: true,\n winner: board[row]![0] === \"X\" ? \"You Win!\" : \"You Lose!\",\n };\n }\n }\n\n for (let col = 0; col < 3; col++) {\n if (\n board[0]![col] &&\n board[0]![col] === board[1]![col] &&\n board[1]![col] === board[2]![col]\n ) {\n return {\n gameOver: true,\n winner: board[0]![col] === \"X\" ? \"You Win!\" : \"You Lose!\",\n };\n }\n }\n\n if (\n board[0]![0] &&\n board[0]![0] === board[1]![1] &&\n board[1]![1] === board[2]![2]\n ) {\n return {\n gameOver: true,\n winner: board[0]![0] === \"X\" ? \"You Win!\" : \"You Lose!\",\n };\n }\n\n if (\n board[0]![2] &&\n board[0]![2] === board[1]![1] &&\n board[1]![1] === board[2]![0]\n ) {\n return {\n gameOver: true,\n winner: board[0]![2] === \"X\" ? \"You Win!\" : \"You Lose!\",\n };\n }\n\n const allFilled = board.every((row) => row.every((cell) => cell !== \"\"));\n\n if (allFilled) {\n return {\n gameOver: true,\n winner: \"It's a Draw!\",\n };\n }\n\n return {\n gameOver: false,\n winner: null,\n };\n};\n\nexport const winnerAction = async ({\n state,\n}: ArcStateContext<State, any>): Promise<TypedImmutableMap<State>> => {\n const board = state.get(\"board\");\n const winnerOrNot = checkWinner(board);\n\n return state\n .set(\"gameOver\", winnerOrNot.gameOver)\n .set(\"winner\", winnerOrNot.winner);\n};\n","import { createArc, Arc } from \"@arc-dev/core\";\nimport { State } from \"./tic-tac-toe.arc\";\nimport { moveAgent } from \"./agents/move.agent\";\nimport { checkWinner } from \"./actions/check-winner\";\n\nenum NodeId {\n ShowBoard = \"show-board\",\n PlayerMove = \"player-move\",\n CheckWinner = \"check-winner\",\n GetAIMove = \"get-ai-move\",\n ApplyAIMove = \"apply-ai-move\",\n}\n\nconst Id = \"game-loop-body\";\n\nexport const TicTacToeGameLoopArc: Arc = createArc<State>(\n Id,\n ({ node, edge }) => {\n node.action(NodeId.ShowBoard, async ({ state, render }) => {\n const board = state.get(\"board\");\n\n let output = \"\\nBoard:\\n\";\n\n board.forEach((row: string[], idx: number) => {\n const formattedRow = row.map((cell) => cell || \" \").join(\" | \");\n output += `${idx}: ${formattedRow}\\n`;\n });\n\n render(output);\n\n return state;\n });\n\n node.action(NodeId.PlayerMove, async ({ state, edgeIn, render }) => {\n const answer = edgeIn.get(NodeId.PlayerMove) ?? \"\";\n const [rowStr, colStr] = answer.split(\",\");\n const row = parseInt(rowStr?.trim() || \"0\");\n const col = parseInt(colStr?.trim() || \"0\");\n\n const updatedBoard = state\n .get(\"board\")\n .map((r: string[], rIdx: number) =>\n r.map((cell: string, cIdx: number) =>\n rIdx === row && cIdx === col ? \"X\" : cell\n )\n );\n\n let output = \"\";\n updatedBoard.forEach((row: string[], idx: number) => {\n const formattedRow = row.map((cell: string) => cell || \" \").join(\" | \");\n output += `${idx}: ${formattedRow}\\n`;\n });\n\n render(output);\n\n return state\n .set(\"board\", updatedBoard)\n .set(\"currentPlayer\", \"O\" as const);\n });\n\n node.action(NodeId.CheckWinner, async ({ state, render }) => {\n const board = state.get(\"board\");\n const result = checkWinner(board);\n\n if (result.gameOver) {\n render(`🎮 Game Over: ${result.winner}`);\n }\n\n return state\n .set(\"gameOver\", result.gameOver)\n .set(\"winner\", result.winner);\n });\n\n node.agent(NodeId.GetAIMove, moveAgent);\n\n node.action(NodeId.ApplyAIMove, async ({ state, context, render }) => {\n const moveAgentResult = context.get(NodeId.GetAIMove);\n const row = moveAgentResult.get(\"row\");\n const col = moveAgentResult.get(\"col\");\n const board = state.get(\"board\");\n\n let finalRow = row;\n let finalCol = col;\n\n if (\n row < 0 ||\n row >= board.length ||\n col < 0 ||\n col >= board[0]!.length ||\n board[row]![col]\n ) {\n outerLoop: for (let r = 0; r < board.length; r++) {\n for (let c = 0; c < board[r]!.length; c++) {\n if (!board[r]![c]) {\n finalRow = r;\n finalCol = c;\n break outerLoop;\n }\n }\n }\n }\n\n const updatedBoard = board.map((r: string[], rIdx: number) =>\n r.map((cell: string, cIdx: number) =>\n rIdx === finalRow && cIdx === finalCol ? \"O\" : cell\n )\n );\n\n let output = \"\";\n updatedBoard.forEach((row: string[], idx: number) => {\n const formattedRow = row.map((cell: string) => cell || \" \").join(\" | \");\n output += `${idx}: ${formattedRow}\\n`;\n });\n\n render(output);\n\n return state\n .set(\"board\", updatedBoard)\n .set(\"currentPlayer\", \"X\" as const);\n });\n\n edge\n .from(NodeId.ShowBoard)\n .waitForInput({\n message: \"Enter your move (row, col): \",\n validator: (input: string, { state }) => {\n const [rowStr, colStr] = input.split(\",\");\n const row = parseInt(rowStr?.trim() || \"\");\n const col = parseInt(colStr?.trim() || \"\");\n\n if (isNaN(row) || isNaN(col)) {\n return {\n valid: false,\n message: \"Invalid format. Use: row,col (e.g., 0,1)\",\n };\n }\n\n const board = state.get(\"board\");\n if (\n row < 0 ||\n row >= board.length ||\n col < 0 ||\n col >= board[0]!.length\n ) {\n return {\n valid: false,\n message: \"Out of bounds. Try again.\",\n };\n }\n\n if (board[row]![col]) {\n return {\n valid: false,\n message: \"Space taken. Choose an empty space.\",\n };\n }\n\n return { valid: true };\n },\n })\n .to(NodeId.PlayerMove);\n edge.from(NodeId.PlayerMove).to(NodeId.GetAIMove);\n edge.from(NodeId.GetAIMove).to(NodeId.ApplyAIMove);\n edge.from(NodeId.ApplyAIMove).to(NodeId.CheckWinner);\n }\n);\n","import { createArc, Arc } from \"@arc-dev/core\";\nimport { TicTacToeGameLoopArc } from \"./game-loop.arc\";\n\nenum ArcId {\n GameLoop = \"game-loop\",\n}\n\ntype BoardState = string[][];\n\nexport type State = {\n board: BoardState;\n currentPlayer: \"X\" | \"O\";\n gameOver: boolean;\n winner: \"You Win!\" | \"You Lose!\" | \"It's a Draw!\" | null;\n};\n\nexport const TicTacToeArc: Arc = createArc<State>(\n \"tic-tac-toe\",\n ({ node, edge }) => {\n node.arc(ArcId.GameLoop, TicTacToeGameLoopArc);\n\n edge\n .from(ArcId.GameLoop)\n .to(ArcId.GameLoop)\n .when(({ state }) => !state.get(\"gameOver\"))\n .maxIterations(9);\n }\n);\n"],"names":["NodeId"],"mappings":"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"}
{"version":3,"file":"index.js","sources":["../src/arcs/tone/tone.arc.ts","../src/arcs/tic-tac-toe/agents/move.agent.ts","../src/arcs/tic-tac-toe/actions/check-winner.ts","../src/arcs/tic-tac-toe/game-loop.arc.ts","../src/arcs/tic-tac-toe/tic-tac-toe.arc.ts"],"sourcesContent":["import { createArc, Arc } from \"@arc-dev/core\";\nimport { z } from \"zod\";\n\nenum NodeId {\n Plan = \"plan-style\",\n Verify = \"verify-style\",\n Finalize = \"finalize-rewrite\",\n}\n\nenum ConditionId {\n HighQuality = \"high-quality\",\n}\nconst QUALITY_THRESHOLD = 0.7;\n\ntype State = {\n examples: string[];\n text: string;\n};\n\nexport const ToneRewriterArc: Arc = createArc<State>(\n \"tone-rewriter\",\n ({ node, edge }) => {\n node.agent(NodeId.Plan, {\n model: \"openai/gpt-4o-mini\",\n output: z.object({\n text: z.string(),\n }),\n messages: ({ state }) => {\n const examples = state.get(\"examples\");\n const text = state.get(\"text\");\n\n return [\n {\n role: \"system\",\n content:\n \"You are a helpful assistant that rewrites text in different tones and styles that is based on the provided examples of the users writing styles.\",\n },\n {\n role: \"user\",\n content: `\n My typically writing style is as follows:\n ${examples.join(\"\\n\\n\")}.\n \n You must rewrite the following text to match my writing style as closely as possible, do not changing the meaning of the text:\n \"${text}\"\n `,\n },\n ];\n },\n });\n node.agent(NodeId.Verify, {\n model: \"openai/gpt-4o-mini\",\n messages: ({ state, context }) => {\n const examples = state.get(\"examples\");\n const rewrittenText = context.get(NodeId.Plan).get(\"text\");\n\n return [\n {\n role: \"system\",\n content:\n \"You are a style critic that evaluates text rewrites. Respond with ONLY a number between 0.0 and 1.0 representing the quality score.\",\n },\n {\n role: \"user\",\n content: `Evaluate how well this text matches the users style of writing:\n \n My writing style examples are:\n ${examples.join(\"\\n\\n\")}.\n \n Text:\n \"${rewrittenText}\"\n \n Provide an overall quality score between 0.0 (poor) and 1.0 (excellent).`,\n },\n ];\n },\n output: z.object({\n quality: z.number(),\n }),\n });\n node.action(NodeId.Finalize, ({ state, context, render }) => {\n const text = context.get(NodeId.Plan).get(\"text\");\n\n render(text);\n\n return state.set(\"result\", context.get(NodeId.Plan).get(\"text\"));\n });\n\n edge.condition(\n ConditionId.HighQuality,\n ({ context }) =>\n context.get(NodeId.Verify).get(\"quality\") >= QUALITY_THRESHOLD\n );\n edge.from(NodeId.Plan).to(NodeId.Verify);\n edge.from(NodeId.Verify).to(NodeId.Finalize).when(ConditionId.HighQuality);\n }\n);\n","import { ArcStateContext } from \"@arc-dev/core\";\nimport { State } from \"../tic-tac-toe.arc\";\nimport { z } from \"zod\";\n\nexport const moveAgent = {\n model: \"openai/gpt-4o\" as const,\n output: z.object({\n row: z.number(),\n col: z.number(),\n }),\n when: ({ state }: ArcStateContext<State, Record<string, never>>) =>\n !state.get(\"gameOver\"),\n messages: ({ state }: ArcStateContext<State, Record<string, never>>) => {\n const board = state.get(\"board\");\n\n return [\n {\n role: \"system\" as const,\n content: `\n You are playing tic-tac-toe as 'O' against 'X'. Empty cells are \"\" (empty strings).\n Play strategically: win if possible, block opponent wins, prefer center/corners over edges.\n Only play in empty (\"\") cells.\n `,\n },\n {\n role: \"user\" as const,\n content: `\n Board state: ${JSON.stringify(board)}\n Return the row and col indices of your move (must be an empty cell).\n `,\n },\n ];\n },\n};\n","import { State } from \"../tic-tac-toe.arc\";\nimport { ArcStateContext, TypedImmutableMap } from \"@arc-dev/core\";\n\nexport const checkWinner = (\n board: State[\"board\"]\n): {\n gameOver: boolean;\n winner: \"You Win!\" | \"You Lose!\" | \"It's a Draw!\" | null;\n} => {\n for (let row = 0; row < 3; row++) {\n if (\n board[row]![0] &&\n board[row]![0] === board[row]![1] &&\n board[row]![1] === board[row]![2]\n ) {\n return {\n gameOver: true,\n winner: board[row]![0] === \"X\" ? \"You Win!\" : \"You Lose!\",\n };\n }\n }\n\n for (let col = 0; col < 3; col++) {\n if (\n board[0]![col] &&\n board[0]![col] === board[1]![col] &&\n board[1]![col] === board[2]![col]\n ) {\n return {\n gameOver: true,\n winner: board[0]![col] === \"X\" ? \"You Win!\" : \"You Lose!\",\n };\n }\n }\n\n if (\n board[0]![0] &&\n board[0]![0] === board[1]![1] &&\n board[1]![1] === board[2]![2]\n ) {\n return {\n gameOver: true,\n winner: board[0]![0] === \"X\" ? \"You Win!\" : \"You Lose!\",\n };\n }\n\n if (\n board[0]![2] &&\n board[0]![2] === board[1]![1] &&\n board[1]![1] === board[2]![0]\n ) {\n return {\n gameOver: true,\n winner: board[0]![2] === \"X\" ? \"You Win!\" : \"You Lose!\",\n };\n }\n\n const allFilled = board.every((row) => row.every((cell) => cell !== \"\"));\n\n if (allFilled) {\n return {\n gameOver: true,\n winner: \"It's a Draw!\",\n };\n }\n\n return {\n gameOver: false,\n winner: null,\n };\n};\n\nexport const winnerAction = async ({\n state,\n}: ArcStateContext<State, any>): Promise<TypedImmutableMap<State>> => {\n const board = state.get(\"board\");\n const winnerOrNot = checkWinner(board);\n\n return state\n .set(\"gameOver\", winnerOrNot.gameOver)\n .set(\"winner\", winnerOrNot.winner);\n};\n","import { createArc, Arc } from \"@arc-dev/core\";\nimport { State } from \"./tic-tac-toe.arc\";\nimport { moveAgent } from \"./agents/move.agent\";\nimport { checkWinner } from \"./actions/check-winner\";\n\nenum NodeId {\n ShowBoard = \"show-board\",\n PlayerMove = \"player-move\",\n CheckWinner = \"check-winner\",\n GetAIMove = \"get-ai-move\",\n ApplyAIMove = \"apply-ai-move\",\n}\n\nconst Id = \"game-loop-body\";\n\nexport const TicTacToeGameLoopArc: Arc = createArc<State>(\n Id,\n ({ node, edge }) => {\n node.action(NodeId.ShowBoard, async ({ state, render }) => {\n const board = state.get(\"board\");\n\n let output = \"\\nBoard:\\n\";\n\n board.forEach((row: string[], idx: number) => {\n const formattedRow = row.map((cell) => cell || \" \").join(\" | \");\n output += `${idx}: ${formattedRow}\\n`;\n });\n\n render(output);\n\n return state;\n });\n\n node.action(NodeId.PlayerMove, async ({ state, edgeContext, render }) => {\n const answer = edgeContext.get(NodeId.PlayerMove) ?? \"\";\n const [rowStr, colStr] = answer.split(\",\");\n const row = parseInt(rowStr?.trim() || \"0\");\n const col = parseInt(colStr?.trim() || \"0\");\n\n const updatedBoard = state\n .get(\"board\")\n .map((r: string[], rIdx: number) =>\n r.map((cell: string, cIdx: number) =>\n rIdx === row && cIdx === col ? \"X\" : cell\n )\n );\n\n let output = \"\";\n updatedBoard.forEach((row: string[], idx: number) => {\n const formattedRow = row.map((cell: string) => cell || \" \").join(\" | \");\n output += `${idx}: ${formattedRow}\\n`;\n });\n\n render(output);\n\n return state\n .set(\"board\", updatedBoard)\n .set(\"currentPlayer\", \"O\" as const);\n });\n\n node.action(NodeId.CheckWinner, async ({ state, render }) => {\n const board = state.get(\"board\");\n const result = checkWinner(board);\n\n if (result.gameOver) {\n render(`🎮 Game Over: ${result.winner}`);\n }\n\n return state\n .set(\"gameOver\", result.gameOver)\n .set(\"winner\", result.winner);\n });\n\n node.agent(NodeId.GetAIMove, moveAgent);\n\n node.action(NodeId.ApplyAIMove, async ({ state, context, render }) => {\n const moveAgentResult = context.get(NodeId.GetAIMove);\n const row = moveAgentResult.get(\"row\");\n const col = moveAgentResult.get(\"col\");\n const board = state.get(\"board\");\n\n let finalRow = row;\n let finalCol = col;\n\n if (\n row < 0 ||\n row >= board.length ||\n col < 0 ||\n col >= board[0]!.length ||\n board[row]![col]\n ) {\n outerLoop: for (let r = 0; r < board.length; r++) {\n for (let c = 0; c < board[r]!.length; c++) {\n if (!board[r]![c]) {\n finalRow = r;\n finalCol = c;\n break outerLoop;\n }\n }\n }\n }\n\n const updatedBoard = board.map((r: string[], rIdx: number) =>\n r.map((cell: string, cIdx: number) =>\n rIdx === finalRow && cIdx === finalCol ? \"O\" : cell\n )\n );\n\n let output = \"\";\n updatedBoard.forEach((row: string[], idx: number) => {\n const formattedRow = row.map((cell: string) => cell || \" \").join(\" | \");\n output += `${idx}: ${formattedRow}\\n`;\n });\n\n render(output);\n\n return state\n .set(\"board\", updatedBoard)\n .set(\"currentPlayer\", \"X\" as const);\n });\n\n edge\n .from(NodeId.ShowBoard)\n .waitForInput({\n message: \"Enter your move (row, col): \",\n validator: (input: string, { state }) => {\n const [rowStr, colStr] = input.split(\",\");\n const row = parseInt(rowStr?.trim() || \"\");\n const col = parseInt(colStr?.trim() || \"\");\n\n if (isNaN(row) || isNaN(col)) {\n return {\n valid: false,\n message: \"Invalid format. Use: row,col (e.g., 0,1)\",\n };\n }\n\n const board = state.get(\"board\");\n if (\n row < 0 ||\n row >= board.length ||\n col < 0 ||\n col >= board[0]!.length\n ) {\n return {\n valid: false,\n message: \"Out of bounds. Try again.\",\n };\n }\n\n if (board[row]![col]) {\n return {\n valid: false,\n message: \"Space taken. Choose an empty space.\",\n };\n }\n\n return { valid: true };\n },\n })\n .to(NodeId.PlayerMove);\n edge.from(NodeId.PlayerMove).to(NodeId.GetAIMove);\n edge.from(NodeId.GetAIMove).to(NodeId.ApplyAIMove);\n edge.from(NodeId.ApplyAIMove).to(NodeId.CheckWinner);\n }\n);\n","import { createArc, Arc } from \"@arc-dev/core\";\nimport { TicTacToeGameLoopArc } from \"./game-loop.arc\";\n\nenum ArcId {\n GameLoop = \"game-loop\",\n}\n\ntype BoardState = string[][];\n\nexport type State = {\n board: BoardState;\n currentPlayer: \"X\" | \"O\";\n gameOver: boolean;\n winner: \"You Win!\" | \"You Lose!\" | \"It's a Draw!\" | null;\n};\n\nexport const TicTacToeArc: Arc = createArc<State>(\n \"tic-tac-toe\",\n ({ node, edge }) => {\n node.arc(ArcId.GameLoop, TicTacToeGameLoopArc);\n\n edge\n .from(ArcId.GameLoop)\n .to(ArcId.GameLoop)\n .when(({ state }) => !state.get(\"gameOver\"))\n .maxIterations(9);\n }\n);\n"],"names":["NodeId"],"mappings":"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"}
{
"name": "@arc-dev/examples",
"description": "Runnable ARC runtime examples",
"version": "0.0.2-alpha.2",
"version": "0.0.2-alpha.3",
"type": "module",

@@ -28,4 +28,4 @@ "license": "Apache-2.0",

"zod": "^4.1.13",
"@arc-dev/core": "0.0.2-alpha.2",
"@arc-dev/runtime": "0.0.2-alpha.2"
"@arc-dev/core": "0.0.2-alpha.3",
"@arc-dev/runtime": "0.0.2-alpha.3"
},

@@ -32,0 +32,0 @@ "devDependencies": {